Local Site Lift
Transforma site feio de negócio local em página estática rápida, com cara
própria, feita para converter no celular.
O trabalho termina numa pasta dist/ pronta. Publicar é de outra skill, a
cpanel-deploy — aqui não há token, não há .env, não há hospedagem.
O trabalho não é "fazer um site bonito". É colocar o comércio no ar com um caminho óbvio até o WhatsApp.
Quando parar e recusar
Este fluxo cobre site institucional de um negócio físico. Recuse ou redirecione quando o pedido for tema WordPress, loja com carrinho, dashboard, app, SaaS ou painel admin. Diga o limite e ofereça só a vitrine estática.
Não invente CNPJ, endereço, horário, telefone ou foto do estabelecimento. Peça o dado ou deixe um placeholder explícito.
Não imprima, commite ou cole token, senha ou conteúdo de .env na conversa, no git ou no HTML.
Onde o trabalho mora
Uma pasta por cliente, dentro da pasta em que a conversa está acontecendo:
<pasta-do-projeto>/clientes/<nome-do-cliente>/
├── PRODUCT.md brief
├── ANTES.md auditoria do site atual
├── DESIGN.md direção visual
├── dist/ o site
└── origem/ o que foi baixado do site antigo (rascunho)
Nunca jogue em Downloads nem em pasta temporária: some, e o cliente volta
daqui a três meses pedindo ajuste.
Se a pasta do projeto for um repositório git, ponha clientes/ no
.gitignore antes de criar o primeiro arquivo. O PRODUCT.md carrega CNPJ,
telefone e endereço de um negócio real, e isso não entra num repositório
público.
Pipeline
Siga nesta ordem. Não pule o brief, e não publique nada antes do usuário aprovar o preview local.
Brief do negócio — copie assets/PRODUCT.template.md para PRODUCT.md e preencha. Leia references/negocio-local-br.md.
Captura do site atual — se houver URL, abra, leia o HTML visível, anote textos reais, fotos úteis, páginas e o que falha (lento, ilegível no celular, sem CTA, endereço errado). Guarde o "antes" em ANTES.md.
Perfil do Google — se houver APIFY_TOKEN, consulte. É a única fonte
acessível de foto real do lugar, e o perfil é mantido pelo dono, então
costuma estar mais certo que o site.
python scripts/negocio.py consultar "<nome> <cidade>" --out google.json
python scripts/negocio.py fotos google.json --out origem/google --n 4
Confronte com o PRODUCT.md e mostre as divergências ao usuário. No
primeiro site real o Google trazia 231 onde o site dizia 23, e marcava
sábado como fechado enquanto o site anunciava 7h30 às 12h. Endereço errado
manda gente para o lugar errado: divergência é assunto do dono, não escolha
sua.
Nota abaixo de 4,0 não vira selo no site, e aggregateRating só entra
no schema com o número verificado. Leia as avaliações de uma estrela e conte
ao dono o que elas repetem: costuma ser problema de operação que o site não
conserta e não deve esconder.
Olhe as fotos antes de usar. São mistura de foto do dono e de cliente, e
podem ter rosto de funcionário, que exige consentimento. Toda foto daí é
candidata marcada no PRODUCT.md, nunca publicação direta.
Sem o token, pule: o site sai igual, só sem foto real e sem nota.
Direção visual — leia references/design-floor.md. Escreva em DESIGN.md uma paleta de 4 a 6 cores nomeadas, um ou dois tipos, o conceito de layout em uma frase e o elemento que carrega a personalidade. Revise o plano contra os defaults de IA listados no floor. Só então gere código.
Imagens — leia a seção "Imagem" do design-floor.md. A decisão é sua, o
scripts/imagens.py só executa. Primeiro: a imagem afirma algo sobre o
negócio (fachada, sala, equipe)? Então só foto real deles, ou nenhuma. Se
não: busque no Pexels quando for assunto comum do mundo real, e gere na
kie.ai quando for específico da ideia deste site.
python scripts/imagens.py buscar "<termo em ingles>" --n 5 --previa /tmp/p
python scripts/imagens.py pegar <id> --out dist/img/hero
python scripts/imagens.py gerar "<prompt>" --out dist/img/x # custa crédito
Antes de gerar, mostre o prompt e espere o ok: custa crédito.
Build estático — gere o site em dist/ (HTML + CSS + JS mínimo + imagens). Mobile primeiro. Uma oferta. Um CTA principal.
Aferir o artesanato — antes de mostrar qualquer coisa ao usuário:
python scripts/aferir.py dist/
Ele mede o que separa site de agência de site amador: tamanho do h1,
contraste da escala, estados de interação, grade no desktop, rodapé. Sai com
código 1 e diz o número de cada falha. Corrija tudo antes do preview.
Isso existe porque duas entregas saíram planas e com metade da tela vazia,
seguindo um design-floor.md que só listava proibições.
Checklist de conversão — confira references/negocio-local-br.md antes de chamar pronto.
Preview — sirva dist/ localmente e peça o ok do usuário:
python -m http.server 8080 --directory dist
Abra http://localhost:8080. Confira também na largura de 360px (DevTools,
modo dispositivo) antes de mostrar — este site vive no celular.
Publicar — só com ok explícito, e é outra skill. Peça a cpanel-deploy,
que sobe a pasta dist/ num cPanel e confere se o endereço no ar é mesmo a
página nova. Se o usuário hospeda em outro lugar (Vercel, Netlify), o
dist/ é estático puro e serve igual.
Brief mínimo
Sem estes campos o visual vira template. Complete antes de desenhar.
- nome do negócio, cidade, bairro
- o que vende, para quem, em uma frase
- oferta principal (o que a pessoa ganha ao chamar)
- WhatsApp com DDD
- endereço e horário
- tom (simples, acolhedor, técnico, popular, sofisticado)
- 1 a 3 fotos reais, se existirem
- URL do site feio, se existir
O brief vence o gosto da skill. Padaria não parece fintech. Oficina não parece spa.
Build
Empilhe pouco. Hospedagem compartilhada não é lugar de React, Next ou bundler obrigatório.
- leia o chão numérico do
design-floor.md antes de escrever CSS. h1 de
3,5rem, no máximo 8 tamanhos de fonte, grade de verdade no desktop
dist/index.html como entrada
- CSS próprio em arquivo separado, variáveis na raiz
- JS só para menu mobile, WhatsApp flutuante ou mapa
- imagens em
dist/img/, comprimidas, com alt real
dist/.htaccess com HTTPS e cache de estáticos, se o destino for Apache (modelo em assets/htaccess.template). É ele que faz o CDN cachear
- fontes via Google Fonts ou arquivo local — nunca mais de duas famílias
Páginas típicas de um comércio local. Home, serviços, sobre, contato. Muitos negócios cabem em uma página com âncoras. Prefira uma página quando o conteúdo for curto.
HTML semântico. Um h1. CTA com texto de ação ("Chamar no WhatsApp"), não "Enviar". Links de telefone em tel: e WhatsApp em https://wa.me/55DDDNUMERO com mensagem pronta.
Publicar
Não é trabalho desta skill. O dist/ é HTML, CSS, JS e imagem: sobe em
qualquer lugar que sirva arquivo estático.
Para cPanel (HostGator e equivalentes), use a skill cpanel-deploy: ela lê o
token de um .env, não apaga nada no servidor, avisa se houver index.php
velho ganhando da home nova, e confere no fim se a URL publicada é a página que
subiu.
Antes de entregar, avise o cliente sobre o que ficou marcado como
[CONFIRMAR] no PRODUCT.md. Em site de saúde, alimentação ou serviço
regulado, isso costuma incluir responsável técnico e registro profissional.
Qualidade em um ciclo
Construa inteiro. Inspecione uma vez no desktop e no mobile. Corrija tudo num lote. Pare. Loop aberto de "mais um polish" gasta token e piora o resultado.
Leia references/design-floor.md de novo só se o lote de correção exigir direção, não como ritual.
1---2name: local-site-lift3description: Refaz o site feio de um negócio local como página estática rápida, decidindo a direção visual antes de escrever código. Entrega brief, auditoria do site atual e a pasta dist/ pronta. Ativa em "melhora o site da padaria", "site feio de comércio", "refaz a vitrine da oficina", "landing page pro meu salão", "site de clínica/restaurante/pet shop/advogado/barbearia", "meu site é lento e feio", "quero um site simples com WhatsApp", "redesign a local business site". NÃO use para tema WordPress, loja com carrinho ou checkout, área logada, blog com CMS, dashboard, app, SaaS, painel admin, nem projeto Next/React que precise de servidor — diga o limite e ofereça só a vitrine estática. Esta skill NÃO publica: para subir no cPanel, o trabalho é da skill cpanel-deploy. Se o pedido for vago como "faz um site", pergunte que negócio é e se tem endereço físico antes de acionar.4license: MIT5---67# Local Site Lift89Transforma site feio de negócio local em página estática rápida, com cara10própria, feita para converter no celular.1112O trabalho termina numa pasta `dist/` pronta. **Publicar é de outra skill**, a13`cpanel-deploy` — aqui não há token, não há `.env`, não há hospedagem.1415O trabalho não é "fazer um site bonito". É colocar o comércio no ar com um caminho óbvio até o WhatsApp.1617## Quando parar e recusar1819Este fluxo cobre site institucional de um negócio físico. Recuse ou redirecione quando o pedido for tema WordPress, loja com carrinho, dashboard, app, SaaS ou painel admin. Diga o limite e ofereça só a vitrine estática.2021Não invente CNPJ, endereço, horário, telefone ou foto do estabelecimento. Peça o dado ou deixe um placeholder explícito.2223Não imprima, commite ou cole token, senha ou conteúdo de `.env` na conversa, no git ou no HTML.2425## Onde o trabalho mora2627Uma pasta por cliente, **dentro da pasta em que a conversa está acontecendo**:2829```30<pasta-do-projeto>/clientes/<nome-do-cliente>/31├── PRODUCT.md brief32├── ANTES.md auditoria do site atual33├── DESIGN.md direção visual34├── dist/ o site35└── origem/ o que foi baixado do site antigo (rascunho)36```3738Nunca jogue em `Downloads` nem em pasta temporária: some, e o cliente volta39daqui a três meses pedindo ajuste.4041**Se a pasta do projeto for um repositório git, ponha `clientes/` no42`.gitignore` antes de criar o primeiro arquivo.** O `PRODUCT.md` carrega CNPJ,43telefone e endereço de um negócio real, e isso não entra num repositório44público.4546## Pipeline4748Siga nesta ordem. Não pule o brief, e não publique nada antes do usuário aprovar o preview local.49501. Brief do negócio — copie `assets/PRODUCT.template.md` para `PRODUCT.md` e preencha. Leia `references/negocio-local-br.md`.512. Captura do site atual — se houver URL, abra, leia o HTML visível, anote textos reais, fotos úteis, páginas e o que falha (lento, ilegível no celular, sem CTA, endereço errado). Guarde o "antes" em `ANTES.md`.523. Perfil do Google — se houver `APIFY_TOKEN`, consulte. É a **única fonte53 acessível de foto real do lugar**, e o perfil é mantido pelo dono, então54 costuma estar mais certo que o site.5556 ```bash57 python scripts/negocio.py consultar "<nome> <cidade>" --out google.json58 python scripts/negocio.py fotos google.json --out origem/google --n 459 ```6061 **Confronte com o `PRODUCT.md` e mostre as divergências ao usuário.** No62 primeiro site real o Google trazia `231` onde o site dizia `23`, e marcava63 sábado como fechado enquanto o site anunciava 7h30 às 12h. Endereço errado64 manda gente para o lugar errado: divergência é assunto do dono, não escolha65 sua.6667 **Nota abaixo de 4,0 não vira selo no site**, e `aggregateRating` só entra68 no schema com o número verificado. Leia as avaliações de uma estrela e conte69 ao dono o que elas repetem: costuma ser problema de operação que o site não70 conserta e não deve esconder.7172 **Olhe as fotos antes de usar.** São mistura de foto do dono e de cliente, e73 podem ter rosto de funcionário, que exige consentimento. Toda foto daí é74 candidata marcada no `PRODUCT.md`, nunca publicação direta.7576 Sem o token, pule: o site sai igual, só sem foto real e sem nota.77784. Direção visual — leia `references/design-floor.md`. Escreva em `DESIGN.md` uma paleta de 4 a 6 cores nomeadas, um ou dois tipos, o conceito de layout em uma frase e o elemento que carrega a personalidade. Revise o plano contra os defaults de IA listados no floor. Só então gere código.795. Imagens — leia a seção "Imagem" do `design-floor.md`. **A decisão é sua, o80 `scripts/imagens.py` só executa.** Primeiro: a imagem afirma algo sobre o81 negócio (fachada, sala, equipe)? Então só foto real deles, ou nenhuma. Se82 não: busque no Pexels quando for assunto comum do mundo real, e gere na83 kie.ai quando for específico da ideia deste site.8485 ```bash86 python scripts/imagens.py buscar "<termo em ingles>" --n 5 --previa /tmp/p87 python scripts/imagens.py pegar <id> --out dist/img/hero88 python scripts/imagens.py gerar "<prompt>" --out dist/img/x # custa crédito89 ```9091 **Antes de `gerar`, mostre o prompt e espere o ok:** custa crédito.92936. Build estático — gere o site em `dist/` (HTML + CSS + JS mínimo + imagens). Mobile primeiro. Uma oferta. Um CTA principal.947. Aferir o artesanato — **antes de mostrar qualquer coisa ao usuário**:9596 ```bash97 python scripts/aferir.py dist/98 ```99100 Ele mede o que separa site de agência de site amador: tamanho do `h1`,101 contraste da escala, estados de interação, grade no desktop, rodapé. Sai com102 código 1 e diz o número de cada falha. **Corrija tudo antes do preview.**103104 Isso existe porque duas entregas saíram planas e com metade da tela vazia,105 seguindo um `design-floor.md` que só listava proibições.1061078. Checklist de conversão — confira `references/negocio-local-br.md` antes de chamar pronto.1089. Preview — sirva `dist/` localmente e peça o ok do usuário:109110 ```bash111 python -m http.server 8080 --directory dist112 ```113114 Abra `http://localhost:8080`. Confira também na largura de 360px (DevTools,115 modo dispositivo) antes de mostrar — este site vive no celular.11611710. Publicar — só com ok explícito, e é outra skill. Peça a **cpanel-deploy**,118 que sobe a pasta `dist/` num cPanel e confere se o endereço no ar é mesmo a119 página nova. Se o usuário hospeda em outro lugar (Vercel, Netlify), o120 `dist/` é estático puro e serve igual.121122## Brief mínimo123124Sem estes campos o visual vira template. Complete antes de desenhar.125126- nome do negócio, cidade, bairro127- o que vende, para quem, em uma frase128- oferta principal (o que a pessoa ganha ao chamar)129- WhatsApp com DDD130- endereço e horário131- tom (simples, acolhedor, técnico, popular, sofisticado)132- 1 a 3 fotos reais, se existirem133- URL do site feio, se existir134135O brief vence o gosto da skill. Padaria não parece fintech. Oficina não parece spa.136137## Build138139Empilhe pouco. Hospedagem compartilhada não é lugar de React, Next ou bundler obrigatório.140141- **leia o chão numérico do `design-floor.md` antes de escrever CSS.** `h1` de142 3,5rem, no máximo 8 tamanhos de fonte, grade de verdade no desktop143- `dist/index.html` como entrada144- CSS próprio em arquivo separado, variáveis na raiz145- JS só para menu mobile, WhatsApp flutuante ou mapa146- imagens em `dist/img/`, comprimidas, com `alt` real147- `dist/.htaccess` com HTTPS e cache de estáticos, se o destino for Apache (modelo em `assets/htaccess.template`). É ele que faz o CDN cachear148- fontes via Google Fonts ou arquivo local — nunca mais de duas famílias149150Páginas típicas de um comércio local. Home, serviços, sobre, contato. Muitos negócios cabem em uma página com âncoras. Prefira uma página quando o conteúdo for curto.151152HTML semântico. Um `h1`. CTA com texto de ação ("Chamar no WhatsApp"), não "Enviar". Links de telefone em `tel:` e WhatsApp em `https://wa.me/55DDDNUMERO` com mensagem pronta.153154## Publicar155156Não é trabalho desta skill. O `dist/` é HTML, CSS, JS e imagem: sobe em157qualquer lugar que sirva arquivo estático.158159Para cPanel (HostGator e equivalentes), use a skill **cpanel-deploy**: ela lê o160token de um `.env`, não apaga nada no servidor, avisa se houver `index.php`161velho ganhando da home nova, e confere no fim se a URL publicada é a página que162subiu.163164Antes de entregar, avise o cliente sobre o que ficou marcado como165**[CONFIRMAR]** no `PRODUCT.md`. Em site de saúde, alimentação ou serviço166regulado, isso costuma incluir responsável técnico e registro profissional.167168## Qualidade em um ciclo169170Construa inteiro. Inspecione uma vez no desktop e no mobile. Corrija tudo num lote. Pare. Loop aberto de "mais um polish" gasta token e piora o resultado.171172Leia `references/design-floor.md` de novo só se o lote de correção exigir direção, não como ritual.