skill · vercel-deploy
Esta página é, ela mesma, o resultado da skill que ela explica. Foi montada como
um index.html, publicada na Vercel e ligada a
explicacao.mateuslh.com via DNS na Cloudflare — tudo de forma autônoma,
sem nenhum clique no painel.
Duas peças: quem hospeda e quem resolve o nome
A skill orquestra dois serviços. A Vercel hospeda os arquivos estáticos e
emite o certificado SSL. A Cloudflare é onde mora o DNS do domínio
mateuslh.com — é ela que faz explicacao.mateuslh.com
apontar para a Vercel. Dois scripts já instalados em ~/bin fazem o
trabalho pesado; a skill só decide qual usar e valida o resultado.
Com ou sem domínio próprio?
*.vercel.appvercel-deploy <DIR>
Publica e devolve uma URL pública da Vercel. Ideal para rascunhos e previews.
Adicione --preview para um deploy não-produção.
mateuslh.comvercel-deploy-dominio <DIR> <SUB>
Publica e cria o registro DNS na Cloudflare. Foi o caminho usado aqui:
vercel-deploy-dominio ./explicacao explicacao.
a-z0-9._-). Por isso a pasta
precisa se chamar igual ao subdomínio desejado — aqui ela se chama
explicacao.
Da pasta vazia ao site no ar
Basta um index.html. Assets estáticos e frameworks com build
também funcionam — a Vercel detecta o framework sozinha. O basename da pasta
vira o nome do projeto e deve casar com o subdomínio.
O helper lê o token, sanitiza o nome do projeto, faz
vercel link + vercel deploy --prod, liga o FQDN ao
projeto com vercel domains add e faz o upsert do DNS na Cloudflare.
A Vercel emite o certificado em ~1-2 min. Nesse intervalo um curl
pode devolver 000 ou erro — é normal. A skill faz retry em loop
até receber 200.
Confirma que o site responde 200, opcionalmente tira um
screenshot com o Chrome headless, e devolve a URL final
https://explicacao.mateuslh.com.
Foi literalmente isto que rodou para esta página
# 1. monta o site na pasta ~/lab/explicacao/ (index.html)
# 2. publica e liga o subdomínio (deploy + DNS num passo só)
vercel-deploy-dominio ./explicacao explicacao
# → https://explicacao.mateuslh.com
# 3. valida no ar, com retry pro SSL/propagação
for i in $(seq 1 8); do
code=$(curl -s -o /dev/null -w "%{http_code}" \
"https://explicacao.mateuslh.com" --max-time 10)
[ "$code" = "200" ] && { echo "no ar"; break; }
sleep 18
done
O que o vercel-deploy-dominio faz com o DNS
CNAME <sub>.mateuslh.com → cname.vercel-dns.com.@ ou root) → cria A mateuslh.com → 76.76.21.21.cf_upsert_dns.py)
busca o registro existente e faz PUT (update) ou POST (create).proxied: false) — exigência da Vercel para emitir o SSL.alias_conflict ao revincular um domínio já ligado é benigno.chmod 600 dentro de ~/.config/. O token da Cloudflare tem
escopo mínimo: apenas Zone → DNS → Edit e Zone → Read,
restrito à zona mateuslh.com.