CommunityImagemgithub.com

image-riff — arte original numa linguagem visual emprestada

Transforme uma ou mais imagens de referência em arte original na própria linguagem visual da referência, e depois recorte-a para a superfície desejada.

O que é image-riff — arte original numa linguagem visual emprestada?

Este skill, `image-riff`, é um método para gerar arte original a partir de uma imagem de referência, utilizando a linguagem visual dessa imagem como base. Ele depende do skill `make-art` para a execução das imagens propriamente dita. O objetivo não é apenas criar quatro imagens bonitas, mas sim um conjunto completo de opções reais, que devem ser analisadas, ranqueadas com crítica honesta e, por fim, cortadas para o destino específico (como banner do YouTube, avatar de canal, etc.). O skill enfatiza a criação de um prompt de três partes (STEM, SUBJECT e TAIL), onde a STEM descreve rigorosamente a técnica de renderização observada na imagem de referência, garantindo que o estilo visual seja copiado fielmente sem replicar o assunto original. Ele também fornece orientações detalhadas sobre como criar variações baseadas em 'vantages' (pontos de vista) e como realizar os cortes de entrega para diferentes superfícies, incluindo um teste de tamanho pequeno essencial para ícones e avatares. Suporta a Claude Code e outros agentes que consomem skills markdown, e é especialmente útil para tarefas de branding, design de canais e criação de avatares, onde a consistência visual e a adaptação a diferentes tamanhos são cruciais.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/2016judea/brick-mortar-skills/tree/HEAD/skills/image-riff

Installed? Explore more Imagem skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Perguntar na sua IA favorita

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

Documentação

O que image-riff — arte original numa linguagem visual emprestada faz?

O motor, sua chave de API, suas flags e suas armadilhas estão no skill make-art. Leia-o primeiro. Este skill é o método: como transformar uma imagem de referência num conjunto de opções reais, e como aplicá-las na superfície para a qual realmente se destinam.

Pronto não são quatro imagens bonitas. Pronto é: N placas geradas, cada quadro examinado, ranqueado com crítica honesta, os cortes de destino realizados, e o trabalho salvo na pasta de origem abaixo. Uma execução que para em "aqui estão quatro imagens" entrega ao usuário os últimos dois trabalhos.

Onde o trabalho é salvo

art/<slug-da-fonte>/
  README.md                 título datado, o briefing, uma tabela de ranqueamento -> placa, e POR QUE a vencedora venceu
  1-<slug>.jpg ...          as finais, masters em resolução total, numeradas POR RANQUEAMENTO
  upload-1024/              os entregáveis com o tamanho real, quando a superfície exige um tamanho específico
  small-size-test.png       a prova, quando a legibilidade no tamanho real decidiu
  prompts/                  os prompts das finais exatamente como enviados
  candidates/<round>/       as rodadas que perderam, cada uma com seus próprios prompts/

<slug-da-fonte> é o corpo do trabalho, não a data. Se já existirem pastas irmãs, siga a convenção delas.

  • O README não é opcional. A pasta será revisada a frio, semanas depois. Sem ele, uma pasta de JPEGs numerados não pode dizer qual foi enviado, qual foi rejeitado, ou por quê.
  • Mantenha as rodadas perdedoras. candidates/ é onde está o conhecimento reutilizável.
  • Mantenha os prompts na íntegra. Eles são as instruções de reprodução e a proveniência.
  • Numere as finais por ranqueamento, não por ordem de geração. O nome do arquivo é onde o ranqueamento sobrevive depois que a conversa termina.
  • Mantenha a arte gerada fora de uma biblioteca de fotos pessoal, a menos que solicitado; ela se mistura com fotografias reais.

Faça duas perguntas, depois gaste

A aproximadamente US$ 0,24 por imagem 4K, um conjunto de quatro placas custa cerca de US$ 1: barato o suficiente para que duas perguntas sejam o único obstáculo, caro o suficiente para que zero perguntas seja um desperdício. Ambas as respostas mudam a cada placa, então nenhuma pode ser inferida:

  1. Para que serve? Decide o aspecto e se deve deixar espaço negativo para texto.
  2. Quão distante da base? Reprodução fiel <-> reinterpretação radical.

Pergunte no eixo subjetivo; decida o técnico você mesmo.

O prompt tem três partes, e apenas uma varia

Construa-o em código, um arquivo por assunto:

STEM    (idêntico para cada placa)  — a linguagem de renderização, lida da imagem
SUBJECT (a única variável)          — um parágrafo, uma composição
TAIL    (idêntico para cada placa)  — geometria + as negativas

Um modelo de STEM, como movimentos, não palavras:

Use a imagem anexada estritamente como âncora de estilo e cor. Reproduza sua linguagem de renderização exata: <período + meio>, <como a cor é aplicada>, , <textura / técnica de sombreamento>, <pigmentos nomeados, no máximo 2-3, mais o pequeno acento>, . NÃO copie o assunto da imagem anexada. Componha algo novo.

SUBJECT:

E o TAIL:

composição , sangria total de borda a borda. Sem borda, sem moldura, sem textura de papel, sem margem branca. Sem texto, sem letras, sem assinatura, sem logotipo.

Uma base fotográfica é o caso mais difícil: teste em 2K antes de gastar com um conjunto. "Reproduzir a linguagem de renderização, mudar o assunto" produz arte confiável a partir de uma base estilizada (um painel de quadrinhos, uma gravura). A partir de uma fotografia, pode executar perfeitamente e ainda assim decepcionar. Faça uma terceira pergunta quando a base for uma fotografia — isso deve parecer uma fotografia, ou algo diferente? — e gaste uma ou duas placas 2K antes de quatro placas 4K.

Quando a base é uma fotografia, os campos da STEM mudam, mas seu trabalho não. Substitua os campos de criação de marcas pelos seis itens que uma câmera decide: <estoque + formato>, , <qualidade e ângulo da luz>, <paleta, 3-4 cores nomeadas mais o acento>, <grão / halação / vinheta>, <o que NÃO é>. O último campo é o mais importante, porque o padrão do motor para qualquer prompt fotográfico é o digital contemporâneo: diga sem HDR, sem sombras levantadas, sem clareza digital, sem grade cinematográfica azul-esverdeada e laranja. Uma cláusula como "pretos profundamente esmagados que não retêm nenhum detalhe de sombra" pode ser a linha mais importante do prompt.

Leia também a base em busca de seu assunto implícito, não apenas de sua renderização (por exemplo, um lugar privado, visto de cima, sem ninguém dentro). Nomeie-o em uma frase antes de escrever qualquer SUBJECT; coloque invariantes como nenhuma pessoa visível em qualquer lugar do quadro no TAIL.

Por que é construído assim:

  • A imagem carrega o estilo; a STEM apenas nomeia o que está visivelmente ali. Descreva a criação de marcas que você pode ver — linhas de contorno pretas e duras de espessura variável, sombreamento visível de pontos de meios-tons ben-day, misturas mecânicas aerografadas apenas, sem luz fotográfica. Nomear a técnica impede que o modelo a modernize.
  • "NÃO copie o assunto... componha algo novo" é fundamental. Sem isso, você obtém uma variação da base. Com isso, você obtém composições originais na linguagem da base, e as melhores citam a base em vez de repeti-la.
  • Nomeie pigmentos e limite o acento. Diga "pequeno" sobre o acento especificamente, ou ele domina o quadro.
  • As negativas não são texto padrão. O motor adiciona uma borda de papel/riso por iniciativa própria; quatro negativas no TAIL não custam nada.
  • STEM + TAIL idênticos tornam o conjunto comparável. Cada diferença entre as placas é uma que você pediu.

Os assuntos devem ser VANTAGENS, não decorações

A decisão criativa mais importante. Quatro assuntos que diferem em onde a câmera está:

placavantagemexemplo
spire (pináculo)olhando diretamente para cima de um eixo verticaluma torre surgindo de um mar de nuvens, estreitando-se em perspectiva
wreck (naufrágio)olhando através de uma planície vaziaum naufrágio meio enterrado, uma figura minúscula caminhando até ele
descent (descida)olhando abruptamente para baixo através de nuvensum oceano de placas até um horizonte curvo, uma figura caindo para longe
mandala (mandala)olhando para um padrão puro, sem horizonteuma rosácea simétrica, de canto a canto

As placas são enviadas por sua vantagem: uma coluna vertical sobrevive a um corte de banner letterbox; uma única silhueta contra o céu sobrevive a um corte de avatar quadrado. Quatro placas que diferem apenas em mobília todas cortam da mesma forma — uma opção em quatro fantasias. Uma ideia por placa.

Classifique contra o briefing — depois diga qual cada SUPERFÍCIE quer

Duas ordenações separadas. Classifique honestamente contra a base e nomeie a placa que se desviou; depois adicione uma linha por superfície de destino dizendo qual placa essa superfície quer e por que o corte a torna assim. A placa que você classifica por último em fidelidade pode ser o banner certo. Uma classificação baixa não é um veto; é um eixo.

Corte os recortes. Cada superfície tem uma geometria.

Entregue arquivos no tamanho do destino, não das placas de origem.

Banner do canal do YouTube — um upload 16:9; o YouTube serve uma fatia diferente por dispositivo.

  • Armazenado / TV: 2560x1441.
  • Faixa do desktop: 2560x424, o ~29,4% vertical do meio (topo 35,3% -> fundo 64,7%). Tudo que deve ser visto vive nessa faixa.
  • Uma placa alta 9:16 tem ~3x a altura que um corte 16:9 precisa: escolha a faixa, não aceite o meio por padrão.

Avatar do canal — quadrado, servido de 900x900 até 88x88. Julgue em 88px.

Para ler o que um canal realmente serve:

UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126 Safari/537.36"
curl -sL -A "$UA" "https://www.youtube.com/@<canal>" | grep -o '"banner".\{0,400\}'
# o fcrop64 hex são quatro frações de 16 bits de 0xffff: esquerda, topo, direita, fundo
python3 -c "h='00005a57ffffa5a8'; print([round(int(h[i:i+4],16)/0xffff,4) for i in range(0,16,4)])"

Para outras superfícies, meça o ativo realmente servido antes de cortar; não confie em uma folha de especificações lembrada.

Mecânica

  • Uma imagem de base colada não está no disco. Extraia-a do base64 da transcrição da sessão (make-art tem o trecho), depois olhe para ela antes de gastar uma geração 4K na imagem errada.
  • Gere o conjunto em paralelo, uma chamada de shell por placa. Quatro placas 4K chegam em ~2 minutos.
  • --out foo.png pode escrever um JPEG. Verifique o mime impresso e renomeie.
  • Olhe para cada quadro você mesmo antes do usuário, e verifique a borda de papel em vez de avaliar visualmente: bordas assimétricas quase brancas nas bordas são céu ou nuvem atingindo o sangramento, não uma moldura.

Quando não há imagem de base

O mesmo prompt de três partes funciona sem âncora: a STEM se torna um estilo de casa que você define. Dê a ele uma âncora temática do material do próprio usuário (uma coleção de citações, um painel de inspiração) para que não seja genérico.

Ícones e avatares: o teste de tamanho pequeno é o único teste

A classificação pode inverter entre o tamanho total e o tamanho real. Crie a folha de contato antes de ter uma opinião: reduza a escala para o tamanho de renderização real, corte em círculo como o aplicativo faz, depois amplie por vizinho mais próximo para ver o que sobrevive.

from PIL import Image, ImageDraw
for s in (110, 44, 32):                      # IG: perfil / linha DM / anel do feed+story
    small = Image.open(f"{n}.jpg").convert("RGB").resize((s, s), Image.LANCZOS)
    mask = Image.new("L", (s*4, s*4), 0)
    ImageDraw.Draw(mask).ellipse((0, 0, s*4-1, s*4-1), fill=255)
    out = Image.new("RGB", (s, s), (245, 245, 247))
    out.paste(small, (0, 0), mask.resize((s, s), Image.LANCZOS))
    out.resize((s*5, s*5), Image.NEAREST).save(f"{n}_{s}.png")   # NEAREST = veja os pixels

Uma placa deslumbrante em 110px pode ser um borrão ilegível em 44px. Geometria do Instagram: upload quadrado (1024x1024 funciona), renderizado como um círculo, ~110px no perfil, 44px em uma linha de DM, 32px em um anel de feed ou story. Julgue em 32.

Quatro restrições que fazem a diferença, todas invisíveis em tamanho real:

  1. Três cores planas, e não mais. Cada cor extra é um meio-tom, e meios-tons se fundem.
  2. Nada mais fino que 1/40 do quadro. Diga no prompt como um número.
  3. O emblema deve preencher >=85% da largura. Declare em maiúsculas; caso contrário, o motor centraliza uma marca modesta em muito terreno vazio.
  4. A cor quente pertence ao FUNDO, não a um brilho. Um destque especular não vale nada em 32px; um campo plano cheio de uma cor quente para um polegar. Instruções de brilho metálico se transformam em lama quando reduzidas.

Duas coisas que o motor adiciona por iniciativa própria

  • Nunca mencione o corte circular no prompt. Ele desenhará o círculo. Diga em vez disso: "o fundo plano e ininterrupto vai até todas as quatro bordas do quadrado; o emblema está contido bem dentro dos três quartos centrais", e coloque sem círculo, sem anel, sem medalhão, sem forma envolvente no TAIL.
  • Ele adiciona uma vinheta radial a menos que seja proibido. Exija "cada preenchimento absolutamente plano — sem gradiente, sem vinheta, sem escurecimento radial nos cantos ou bordas."

Nunca credite a imagem de base a partir de uma descrição de estilo

Uma frase de estilo que você escreveu ("na tradição de Moebius") não é uma atribuição; não deixe que ela se torne um crédito adiante. Se um crédito for para algum lugar público, pergunte pelo artista real. Um crédito errado para um artista real é pior do que um em branco.

Mais de uma imagem de base

--image é repetível, então várias âncoras são possíveis, mas menos testadas. Diga no prompt qual imagem fornece o quê ("a imagem 1 é a linguagem de cor e linha; a imagem 2 é a estrutura") e trate o primeiro conjunto como uma sonda.

Consulte também

brand-direction-plates (o conjunto inverso: várias LINGUAGENS em um assunto) · make-art (o motor, as flags, a extração de colagem, a verificação de borda).

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

2016judea/ascii-charts

Build charts as plain Unicode-block text — bar, range, bullet, gap-bracket, star-histogram, heatmap, line, Venn, pie, donut and scatter — with a dependency-free Python script, for anywhere only monospace text survives (newsletter code blocks, Markdown, terminals, plain-text email, chat). Use when a chart has to embed as literal text instead of an image or a third-party chart service, or when you want a hand-made terminal look with no branding footer.

2016judea/buffett-checklist

Apply Warren Buffett's investment framework as a discipline lens when weighing a buy, hold, or sell decision — circle of competence, economic moat, owner earnings & intrinsic value, margin of safety, management/capital-allocation quality, and market psychology (Mr. Market, fear vs greed, temperament). Use when asked to "run this through Buffett", "what would Buffett say", "does this pass the moat test", "is this cheap enough", or for a second, more skeptical read on a name being evaluated or already held. This is a discipline overlay, not a replacement for a strategy — it applies the Buffett lens to how someone actually invests, rather than issuing generic advice.

2016judea/leonardo

Draw the way Leonardo da Vinci drew — a study sheet, a notebook folio, a red-chalk or silverpoint study, a machine cutaway, a storm of vortices — in his real materials and page-logic, generated with the make-art engine and anchored on fifteen of his actual (public-domain) sheets. Use when you say "Leonardo", "da Vinci", "like his notebooks", "a codex page of X", "draw this as one of his study sheets", "sanguine", "silverpoint", or wants a design, diagram, or illustration in that hand. Also a reading guide to his notebooks (Richter's 1883 public-domain translation) for "what did Leonardo say about shadow / trees / water". This is a TASK skill; the engine is `make-art`.

2016judea/mcp-stack

Which free MCP server or framework to reach for, and its traps — finance/gov data (SEC EDGAR, Yahoo, SAM.gov, USAspending), web research (Exa, Firecrawl, Crawl4AI, Jina reader), design/art/brand (Canva, Inkscape, Penpot, Figma, Orshot, Hugging Face image gen, vectorizing, charts), data/spatial (DuckDB spatial, live ArcGIS layers, OpenStreetMap/Overpass, Census, MapLibre), and ops (PostHog, iMessage, context7 docs). Use when making a social post, OG card, poster, logo/vector, chart, map, or brand asset; when querying parquet/geojson/duckdb or a city's open-data layer; when an MCP "needs authentication" or fails; or when asked "what tools do we have", "is there an MCP for X", "should we add X".

2016judea/records-request

Get a specific record out of a US government office by public-records request — "request the assessor's model", "file a data practices request", "FOIA this", "open records request", "can we just ask the county for it", "who do I write to at <county>", "chase that request", "did they ever answer". Covers checking the website first, finding the right office and statute, the carve-out paragraph that makes a request answerable instead of refused, web-form traps (hidden character caps, WAFs that reject apostrophes), chasing (there is usually no deadline), whether what comes back may be republished, and parsing multi-year tables without silent errors.

2016judea/sms-native-product

Build a product whose interface is text messages rather than an app or a website — "no app, no website", "they just text a number", "chat with our agent natively in Text Messages", "can we do this over text", "an SMS bot", "a Telegram bot", "make it a group chat", "minimum viable friction". Fires equally when it has already gone wrong — "my campaign got rejected", "our number is blocked", "the texts aren't arriving", "why do I need to register". Covers the gate that decides whether such a product can send at all (US A2P 10DLC registration, SHAFT content rules, permanent rejection codes), group MMS from code, what each channel can't do, an architecture that survives losing the channel, and guarding model-rewritten user content.

2016judea/vertical-market-agent

Build a chat agent that knows one industry in one metro better than any general model because it carries a precomputed digest of real public records (or a mined review corpus) and can pull live records mid-conversation — finding the moat, building a byte-stable substrate, enumerating what the records can't, the data traps that produce plausible wrong numbers, deterministic math in tools, measured prompt cost and cache TTL, shipping as an ad destination, an off-sector ending, and a precomputed spatial "what is this next to" layer. Use when building a vertical AI agent grounded in records rather than general knowledge.

Habilidades Relacionadas