Início/Trilha 3 · Técnicas Avançadas/Módulo 3.3
MÓDULO 3.3

🎨 Brand-Spec Extraction Avançada

Extrair sistema visual de URL/screenshot do cliente, sem inventar cores. Protocolo de 5 passos: Locate → Download → grep hex → Codify → Vocalise.

8
Tópicos
~50 min
Duração
Avançado
Nível
5 passos
Protocolo

🏁 Resultado: Você extrai um sistema visual de URL/screenshot do cliente sem inventar cores, dominando o protocolo Locate → Download → grep → Codify → Vocalise.

1

⚠️ O problema: agente alucinando hex codes

Por que esse protocolo existe.

O que é

Sem protocolo, você diz "use a marca da Stripe" e o modelo inventa cores plausíveis: #635BFF em vez de #0570DE; tipografia "Inter" em vez de "SF Pro". O output parece Stripe-like mas está errado. Designer experiente percebe; cliente sente que não é a marca dele. Brand-spec extraction elimina esse modo de falha.

Por que aprender

É a diferença entre "AI freestyle" e "trabalho de designer sério". Cliente fornece marca? Você extrai mecanicamente; modelo nunca improvisa. Trust mecânico > trust em LLM "lembrar bem".

Conceitos-chave

  • Hallucination de cor: modo de falha #1 sem protocolo
  • Hallucination de tipografia: modo de falha #2
  • Branch B do discovery: ativa quando usuário fornece URL/spec
  • Mecânico, não criativo: nada inventado, tudo derivado
2

📝 Os 5 passos do protocolo

Locate · Download · grep hex · Codify · Vocalise.

O que é

Sequência fixa, executada pelo agente em background:

  1. Locate: achar onde a marca está documentada (/brand, /press, /about)
  2. Download: puxar CSS/PDF/screenshots
  3. grep hex: extrair cores mecanicamente
  4. Codify: escrever brand-spec.md em OKLch + tipografia + posture
  5. Vocalise: declarar o sistema em uma frase ao usuário

Por que aprender

Cada passo elimina um modo de falha específico. Pular passo = voltar a alucinar. Sequência é validada — funciona em 90% dos sites públicos. Não invente sequência própria; siga.

Conceitos-chave

  • Sequência rígida: não reordenar
  • Estado intermediário visível: usuário vê o que foi achado
  • Falha graceful: sem brand book? cai pra Branch C
  • Tempo: ~60-120s no total para sites públicos
3

🔍 Locate: WebFetch em /brand, /press, /about

Onde marcas costumam documentar identidade.

O que é

Empresas com brand book público costumam expor em paths conhecidos: /brand, /press, /press-kit, /about/brand, /about/press, /media. Agente usa WebFetch em ordem; primeiro hit ganha. Se nada, cai em scraping da homepage CSS.

Por que aprender

Saber esses paths é "design intelligence" — economiza 80% das tentativas. Se cliente é Stripe-tier, brand book está documentado. Se é early-stage, vai ser scraping. Saber escolher caminho = não retrabalhar.

Conceitos-chave

  • /brand, /press, /press-kit: caminhos canônicos
  • WebFetch tool: Claude Code nativo
  • Fallback scraping: homepage CSS quando não há brand
  • Sem brand: cair pra Branch C (improvisar)
4

⬇️ Download: CSS, brand-guide PDF, screenshots

Qualquer artefato que codifique a marca.

O que é

Após Locate, baixe os arquivos:

  • CSS files: são fonte de verdade (design tokens)
  • Brand guide PDF: tem paleta + tipografia explicitada
  • Screenshots / SVG logos: para extrair cor visual
  • Webfont declarations: que tipografia o site carrega

Por que aprender

CSS é "fonte canônica" — todas as outras representações derivam dele. Ler CSS > ler brand book em 90% dos casos: brand book pode estar desatualizado, CSS é o que está rodando agora.

Conceitos-chave

  • curl + WebFetch: ferramentas básicas
  • CSS minificado: ainda contém HEX
  • PDF parsing: via pdftotext (cli) quando preciso
  • Screenshot color: só fallback de último caso
5

🔎 grep hex: extração mecânica

grep -E '#[0-9a-fA-F]{3,8}'

O que é

Regex pega TODOS os hex codes do CSS:

grep -E '#[0-9a-fA-F]{3,8}' style.css | sort -u
# Output:
# #0570DE  (Stripe purple-blue principal)
# #1A1F36  (texto)
# #F6F8FA  (cinza claro fundo)
# #635BFF  (accent CTA)
# #F1F3F5
# ...

Top 5-10 mais frequentes > "ruído" único. Agente aplica heurística: cores que aparecem 10+ vezes = tokens canônicos.

Por que aprender

É a única extração 100% determinística. Modelo lendo CSS lentamente erra; grep + sort não erra. Mecânico vence inteligente quando há regex.

Conceitos-chave

  • Regex hex: 3, 4, 6 ou 8 dígitos
  • Frequência: top 5-10 são tokens canônicos
  • Cluster por similaridade: #0570DE e #035FCC podem ser variações
  • RGB/HSL ignored: raros em CSS de produto
6

📄 Codify: brand-spec.md em OKLch + 3 fonts + 3-5 posture rules

O artefato final do protocolo.

O que é

Brand-spec.md gerado pelo agente:

# brand-spec: Stripe

## color (em OKLch)
- --bg: oklch(98% 0.005 250)        # de #F6F8FA
- --fg: oklch(15% 0.02 270)         # de #1A1F36
- --accent: oklch(48% 0.18 263)     # de #0570DE
- --accent-2: oklch(57% 0.20 270)   # de #635BFF

## typography
- display: "Söhne", "SF Pro Display"
- body: "Söhne", -apple-system, "Helvetica Neue"
- mono: "Söhne Mono", monospace

## posture
- Cards com border 1px hairline; rounded 12px
- Shadows são raros — só em modais
- Accent reservado para CTAs primários

Por que aprender

brand-spec.md é plug-and-play em qualquer skill. Coloca em ./brand-spec.md do projeto, agente lê e aplica em qualquer artefato. Reuso forte.

Conceitos-chave

  • 6 tokens canônicos: bg, fg, accent + variações
  • 3 font stacks: display, body, mono
  • 3-5 posture rules: cards, shadows, motion, copy
  • OKLch mandatory: não usar HEX no spec
  • Path: ./brand-spec.md no root do projeto
7

🗣️ Vocalise: declarar o sistema em uma frase

"Warm cream background, single rust accent at oklch(58% 0.15 35)…"

O que é

Após codify, agente declara em uma frase o que extraiu:

"Stripe é fundo branco-claro com accent azul-violeta vivo
em oklch(48% 0.18 263), tipografia Söhne com humor sóbrio
e posture mínima — cards com hairline, shadows raros."

Usuário valida ou corrige antes de gerar artefato.

Por que aprender

É o "checkpoint" antes de ir adiante. Se vocalise está errado, é mais barato corrigir aqui que depois do CSS pronto. Resume de 1 frase é a hipótese; usuário aceita ou refuta.

Conceitos-chave

  • 1 frase: síntese do que foi extraído
  • Cita OKLch: referência exata, não nome aproximado
  • Postura inclusa: "cards com hairline" > só cores
  • Validation gate: usuário precisa confirmar
8

🔄 Quando converter HEX para OKLch

Preservar L perceptual.

O que é

Converter HEX → OKLch não é trivial: você precisa preservar o L "que parece o mesmo brilho" perceptualmente. oklch.com faz isso bem; conversores genéricos podem dar valores numericamente corretos mas visualmente diferentes. Use sempre a conversão perceptual.

Por que aprender

Conversão errada produz cores que parecem "deslocadas" do original. Cliente sente sutil mas certeiro: "não é a nossa cor". Detalhe técnico que protege identidade visual.

Conceitos-chave

  • oklch.com: conversor canônico
  • Display P3: alguns hex saem do sRGB; OKLch lida
  • Round-trip test: OKLch → HEX → OKLch deve estar próximo
  • Não converter cinzas absolutos: oklch(0% 0 0) e oklch(100% 0 0) só

🛠️ Hands-on

Brief: Extrair brand-spec de uma URL (ex: stripe.com, vercel.com) usando o protocolo. Comparar com design-systems/stripe/DESIGN.md do repo.

  1. Locate: abra stripe.com/brand. Confirma se existe brand book.
  2. Download: curl -O https://stripe.com/css/main.css (ou similar; pode precisar inspect)
  3. grep hex: grep -Eo '#[0-9a-fA-F]{3,8}' main.css | sort | uniq -c | sort -rn | head -20
  4. Codify: escreva brand-spec.md com top 5-6 cores em OKLch (use oklch.com para converter)
  5. Vocalise: escreva 1 frase que sintetiza o sistema
  6. Compare: abra design-systems/stripe/DESIGN.md e verifique convergência de tokens

Comando macro

curl -s https://stripe.com | grep -Eo 'href="[^"]+\.css"' | head -3
# Pega CSS principal, depois:
curl -s https://stripe.com/path/style.css | \
  grep -Eo '#[0-9a-fA-F]{3,8}' | sort | uniq -c | sort -rn | head

📚 Fontes

No repositório

  • packages/contracts/src/prompts/discovery.ts (Branch B)
  • design-systems/stripe/DESIGN.md
  • design-systems/vercel/DESIGN.md

Externas

  • oklch.com (converter HEX → OKLch)
  • stripe.com/brand, vercel.com/brand (exemplos)
  • WebFetch tool (Claude Code)

📌 Resumo do Módulo

1. Sem protocolo, modelo alucina cores e tipografia "plausível" mas erradas.

2. 5 passos: Locate → Download → grep hex → Codify → Vocalise.

3. Locate: /brand, /press, /about/brand são caminhos canônicos.

4. Download: CSS > PDF > screenshot (CSS é fonte de verdade).

5. grep hex + frequency = top 5-10 cores canônicas mecanicamente.

6. Codify em OKLch + 3 font stacks + 3-5 posture rules.

7. Vocalise = 1 frase resumo, gate de validação antes de gerar.

8. HEX → OKLch via oklch.com para preservar L perceptual.

← Módulo 3.2 Módulo 3.4 →