image-annotations
Ajuda seu agente a adicionar anotações em imagens. Ele pode desenhar caixas, setas e textos para explicar partes específicas de uma imagem ou diagrama.
O que ela faz
Esta ferramenta adiciona setas, caixas e textos explicativos a imagens. Ajuda a destacar partes importantes de capturas de tela ou diagramas.
Quando usar
- ✓Para mostrar onde um erro aconteceu em uma captura de tela.
- ✓Para indicar o que mudou entre duas imagens.
- ✓Para adicionar legendas a um diagrama técnico.
Exemplo do que pedir para a IA
“Adicione uma seta e o texto 'Botão de Login' apontando para o botão de login nesta captura de tela.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você fornece a imagem e diz o que destacar. A ferramenta desenha caixas ou setas e adiciona o texto que você escolher, usando cores específicas para indicar se algo é bom ou ruim.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill image-annotationsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/image-annotations/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Anotações de Imagem
Adicione chamadas visuais a qualquer imagem — capturas de tela, diagramas, documentos de arquitetura, quadros de demonstração — usando PIL/Pillow. Destaque o que mudou ou o que olhar, para que os revisores não precisem adivinhar.
Quando Usar Esta Habilidade
Use esta habilidade quando precisar:
- Destacar uma área específica em uma captura de tela para uma descrição de PR
- Anotar imagens de antes/depois para mostrar o que mudou
- Adicionar rótulos e chamadas a diagramas ou imagens de arquitetura
- Criar quadros anotados para demonstrações em GIF animado
Pré-requisitos
pip install Pillow -q
Regras de Cores
- Vermelho (
#E63946) — apenas para coisas "ruins" / "removidas" (por exemplo, circular um bug que está sendo corrigido) - Amarelado-laranja (
#FF9F1C) — para destaques neutros ("olhe aqui", "novo recurso", etc.) - Nunca use vermelho apenas porque chama a atenção — vermelho = ruim/removido
Fonte
- Use Ink Free (
C:/Windows/Fonts/Inkfree.ttf) para um visual de escrita à mão no Windows - No Linux/macOS, use
ImageFont.load_default()como alternativa - Tamanho 36 para anotações em imagens de ~1400px de largura
stroke_width=1comstroke_fill=<same color as fill>— dá corpo sem ser muito grosso- NÃO use contorno branco — parece um efeito de brilho ruim
Formas
- Prefira retângulos arredondados em vez de círculos/elipses — menos pixelização nas bordas
draw.rounded_rectangle([x1, y1, x2, y2], radius=14, outline=color, width=5)- Preenchimento de 18px ao redor do conteúdo alvo
Snippet de Referência
from PIL import Image, ImageDraw, ImageFont
# Setup
font = ImageFont.truetype('C:/Windows/Fonts/Inkfree.ttf', 36) # or load_default()
color = '#FF9F1C' # orange for highlights
stroke = 5
pad = 18
img = Image.open('screenshot.png')
draw = ImageDraw.Draw(img)
# Rounded rect with padding
draw.rounded_rectangle(
[x1 - pad, y1 - pad, x2 + pad, y2 + pad],
radius=14, outline=color, width=stroke
)
# Leader line (same thickness as rect)
draw.line([x2 + pad, cy, x2 + pad + 40, cy - 30], fill=color, width=stroke)
# Label — same-color stroke for body, NO white stroke
draw.text(
(x2 + pad + 45, cy - 60), 'label text',
fill=color, font=font, stroke_width=1, stroke_fill=color
)
img.save('annotated.png')
Anotação Algorítmica — annotate.py
Para imagens com múltiplos elementos para anotar, use o módulo annotate.py abaixo. Salve-o ao lado do seu script e importe dele. Ele lida com o posicionamento automático de rótulos sem sobreposição.
Início rápido
from annotate import annotate_image
result = annotate_image(
'screenshot.png',
[
{'elem': (560, 275, 635, 390), 'label': 'button', 'draw_box': True},
{'elem': (105, 453, 236, 470), 'label': 'status text'},
],
debug=True,
)
result.save('annotated.png')
elem:(x1, y1, x2, y2)caixa delimitadora justa — deve ser coordenadas de pixel exataslabel: rótulo de texto (suporta\npara várias linhas)draw_box: seTrue, desenha um retângulo arredondado ao redor do elemento. SeFalse(padrão), desenha uma ponta de seta em V apontando para o elementodebug: mostra retângulos de destino e mapa de calor de candidatos para validação de posicionamento
Auxiliar de grade de coordenadas
Sempre use grid_image() antes de anotar uma imagem desconhecida. Pré-visualizações redimensionadas exibem imagens menores que as dimensões reais em pixels — o erro se acumula à medida que você se afasta de (0,0).
from annotate import grid_image
grid = grid_image('screenshot.png', step=100)
grid.save('grid.png')
Em seguida, verifique com pequenos cortes:
from PIL import Image
img = Image.open('screenshot.png')
crop = img.crop((x1 - 20, y1 - 20, x2 + 20, y2 + 20))
crop.save('verify.png')
Visão geral do algoritmo
- Busca em anel: candidatos entre MIN_ARROW (25px) e MAX_ARROW (120px) da borda do elemento
- Pontuação de contraste: prefere posicionamentos onde o texto do rótulo é legível —
abs(avg_brightness - 147) - std * 0.3 - dist * 0.02 - Resolução conjunta: candidatos calculados independentemente, posicionados de forma gananciosa (melhor pontuação primeiro)
- Bloqueios rígidos: rótulos não podem sobrepor o elemento ou a caixa de respiro de nenhuma outra anotação
- Penalidade de proximidade: rótulos a menos de 40px de outras caixas posicionadas recebem uma penalidade de pontuação
- Penalidade de cruzamento de setas: -50 para setas cruzando setas já posicionadas
Cores do modo de depuração
| Cor | Significado |
|---|---|
| Ciano | Caixa do elemento alvo (elemento + preenchimento) |
| Cinza | Zona de exclusão (buffer MIN_ARROW) |
| Vermelho→Verde | Mapa de calor de candidatos (vermelho=ruim, verde=bom) |
| Magenta | Posição do rótulo escolhido |
| Laranja | Anotação renderizada final |
Estilos de seta
…
Perguntas frequentes
Posso usar qualquer cor?
Use vermelho apenas para indicar algo ruim ou que foi removido. Use um laranja-amarelado para destacar algo neutro ou novo.
Como a ferramenta sabe onde colocar o texto?
Ela tenta encontrar o melhor lugar para o texto não ficar em cima de outras coisas importantes e usa um algoritmo para evitar sobreposição.
Preciso instalar algo?
Sim, você precisa ter a biblioteca Pillow instalada no seu ambiente Python.
Detalhes
Descrição original do autor
Annotate screenshots, diagrams, and images with callout rectangles, arrows, labels, and color-coded highlights using PIL. Includes rules for animated GIF annotations with timing and pacing.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5189
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
design-system
Ajuda seu agente a criar um sistema de design a partir de um código existente. Ele extrai informações visuais e verifica a consistência, gerando um relatório e uma prévia interativa.
affaan-m/ECC
liquid-glass-design
Ajuda seu agente a criar interfaces de usuário com efeito 'Liquid Glass' para iOS. Permite adicionar efeitos visuais dinâmicos e interativos em SwiftUI e UIKit.
affaan-m/ECC