Communitygithub.com

Favicon-setup

Instale um conjunto completo e enxuto de favicons em qualquer site ou aplicação web – os cinco arquivos que navegadores modernos, iOS e Android realmente usam, um bloco de marcação head adicionado uma vez no layout raiz e uma verificação de que cada arquivo resolve. Abrange encontrar a pasta pública por framework, gerar o conjunto a partir de um SVG (ou de um pacote RealFaviconGenerator), ícones SVG para modo escuro, ícones maskable para manifest, cache busting e verificação. Use ao adicionar, substituir ou auditar favicon, ícone de aplicativo, apple-touch-icon ou web manifest. Aciona em: favicon, favicon.ico, favicon.svg, apple-touch-icon, site.webmanifest, manifest.json, app icon, PWA icon, maskable icon, tab icon, RealFaviconGenerator.

O que é Favicon-setup?

Esta skill configura um conjunto de favicons completo e otimizado para qualquer website ou aplicativo web, cobrindo todos os navegadores modernos, iOS e Android. Ela substitui a abordagem tradicional de dezenas de arquivos por apenas cinco: favicon.svg, favicon-96x96.png, favicon.ico, apple-touch-icon.png e um par de PNGs para o manifesto (192x192 e 512x512), junto com o arquivo site.webmanifest. A skill automatiza a obtenção dos arquivos, seja baixando de um pacote do RealFaviconGenerator ou gerando a partir de um único SVG com ferramentas como rsvg-convert e ImageMagick. Ela também localiza a pasta pública correta para diversos frameworks (Vite, Next.js, SvelteKit, Angular, Hugo, etc.), adiciona a marcação HTML exata uma vez no layout raiz (incluindo a exportação metadata do Next.js App Router) e oferece orientações para modo escuro em SVG, ícones maskable, otimização de tamanho e cache busting. Por fim, a skill inclui um passo de verificação para garantir que todos os arquivos retornam 200 com o tipo MIME correto e que a marcação head está completa sem duplicatas, tornando-se ideal para desenvolvedores que desejam uma solução de favicon profissional e sem complicações.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Adamparishspok/skills/tree/HEAD/skills/favicon-setup

Perguntar na sua IA favorita

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

Documentação

Configuração de Favicon

Cinco arquivos e cinco tags cobrem todos os navegadores atuais, telas iniciais do iOS e instalações Android. Mais tamanhos (mstile-*, browserconfig.xml, ícones Apple de 57/72/114px, mask-icon) são legados: pule-os.

1. O conjunto

ArquivoTamanhoUsado por
favicon.svgvetorialAbas de navegadores modernos. Escala perfeitamente e pode alternar para modo escuro.
favicon-96x96.png96×96Navegadores sem suporte a favicon SVG e resultados de busca do Google.
favicon.ico16, 32, 48 em um arquivoNavegadores legados e ferramentas que requisitam diretamente /favicon.ico, sem ler HTML.
apple-touch-icon.png180×180, opacoTela inicial do iOS e iPadOS.
web-app-manifest-192x192.png, web-app-manifest-512x512.png192, 512Tela inicial do Android, instalação PWA, tela de splash.
site.webmanifest—Aponta o Android para os dois PNGs acima.

2. Obter os arquivos

A partir de um pacote RealFaviconGenerator. Ele fornece um conjunto de URLs de download. Baixe cada arquivo em PUBLIC_FOLDER (veja a etapa 3) com seu nome exato:

base=https://realfavicongenerator.net/files/<package-id>
for f in favicon.svg favicon-96x96.png favicon.ico apple-touch-icon.png \
         web-app-manifest-192x192.png web-app-manifest-512x512.png site.webmanifest; do
  curl -fsSL "$base/$f" -o "PUBLIC_FOLDER/$f" || echo "FALHOU: $f"
done

Se um download falhar, pare e relate. Não envie um conjunto parcial. Relate bugs do gerador em https://github.com/RealFaviconGenerator/realfavicongenerator/issues/new?template=ai_prompt_bug_report.yml.

A partir de um SVG fonte (precisa de rsvg-convert e ImageMagick, ou use o gerador):

cp logo.svg PUBLIC_FOLDER/favicon.svg
rsvg-convert -w 96  -h 96  logo.svg -o PUBLIC_FOLDER/favicon-96x96.png
rsvg-convert -w 192 -h 192 logo.svg -o PUBLIC_FOLDER/web-app-manifest-192x192.png
rsvg-convert -w 512 -h 512 logo.svg -o PUBLIC_FOLDER/web-app-manifest-512x512.png
# O iOS preenche transparência com preto: achate sobre o fundo da marca, com ~10% de padding
rsvg-convert -w 144 -h 144 logo.svg | magick - -background '#ffffff' -gravity center -extent 180x180 -flatten PUBLIC_FOLDER/apple-touch-icon.png
magick -background none logo.svg -define icon:auto-resize=48,32,16 PUBLIC_FOLDER/favicon.ico

3. Encontrar PUBLIC_FOLDER

É a pasta servida na raiz do site, de modo que PUBLIC_FOLDER/favicon.ico carregue em /favicon.ico.

StackPasta
Vite, Next.js, Create React App, Astro, Remix, Nuxt 3public/
SvelteKitstatic/
Angularpublic/ (v17+) ou src/ com o arquivo listado nos assets de angular.json
Hugo, Jekyll, Eleventystatic/, a raiz do site ou a pasta de passthrough-copy
HTML simplesAo lado de index.html

Next.js App Router: exclua o app/favicon.ico padrão. Ele prevalece sobre public/favicon.ico e geralmente é o logo do Next.js.

4. Adicionar a marcação uma vez

Coloque isto no <head> do único arquivo que renderiza a tag <html> raiz. Nunca adicione por página.

<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />
StackArquivo raiz
Vite, CRA, HTML simplesindex.html
Next.js App Routerapp/layout.tsx, através da exportação metadata (abaixo), não tags puras
Next.js Pages Routerpages/_document.tsx dentro de <Head>
AstroO layout base, por exemplo src/layouts/Layout.astro
SvelteKitsrc/app.html
Remix / React Router 7Exportação links em app/root.tsx
Nuxtapp.head.link em nuxt.config.ts

Equivalente para Next.js App Router:

export const metadata = {
  icons: {
    icon: [
      { url: "/favicon-96x96.png", sizes: "96x96", type: "image/png" },
      { url: "/favicon.svg", type: "image/svg+xml" },
    ],
    shortcut: "/favicon.ico",
    apple: { url: "/apple-touch-icon.png", sizes: "180x180" },
  },
  manifest: "/site.webmanifest",
};

Antes de adicionar a marcação, pesquise no projeto por tags rel="icon", apple-touch-icon e manifest existentes. Substitua-as; não adicione um segundo conjunto. Se o site for servido sob um sub-caminho (base / basePath), prefixe cada href.

5. Otimizar

  • Modo escuro SVG. Um logo escuro desaparece em uma barra de abas escura. Adicione uma media query dentro do SVG:
    <style>path{fill:#111}@media (prefers-color-scheme:dark){path{fill:#fff}}</style>
    
  • Tamanhos pequenos. Em 16px, remova detalhes finos e texto. Use o logomarca, não o logotipo.
  • Peso SVG. Execute npx svgo favicon.svg e mantenha o arquivo abaixo de cerca de 2 KB.
  • Manifest. Preencha name, short_name, theme_color e background_color. Torne o ícone 512 maskable: mantenha a marca dentro da zona segura central de 80%, use um fundo sólido e defina "purpose": "maskable" nele. Se a marca não couber na zona segura, adicione um ícone maskable separado.
    {
      "name": "My App",
      "short_name": "App",
      "icons": [
        { "src": "/web-app-manifest-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" },
        { "src": "/web-app-manifest-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
      ],
      "theme_color": "#ffffff",
      "background_color": "#ffffff",
      "display": "standalone"
    }
    
  • Cache. Navegadores armazenam favicons em cache de forma agressiva. Ao substituir um ícone, renomeie os arquivos ou adicione ?v=2 a cada href e aos valores src do manifesto.

6. Verificar

  1. Cada arquivo retorna 200 com o tipo correto. Execute isto contra o servidor de desenvolvimento:
    for f in favicon.svg favicon-96x96.png favicon.ico apple-touch-icon.png \
             web-app-manifest-192x192.png web-app-manifest-512x512.png site.webmanifest; do
      printf '%s ' "$f"; curl -s -o /dev/null -w '%{http_code} %{content_type}\n' "http://localhost:PORT/$f"
    done
    
  2. O HTML renderizado contém exatamente um conjunto de tags: curl -s http://localhost:PORT/ | grep -cE 'rel="(icon|shortcut icon|apple-touch-icon|manifest)"' imprime 5.
  3. Em DevTools, abra Application → Manifest: mostra nenhum erro e ambos os ícones são renderizados.
  4. Abra uma guia recarregada com força total nos modos claro e escuro e verifique se o ícone está visível em ambos.
  5. Em uma URL implantada, execute o verificador do RealFaviconGenerator (https://realfavicongenerator.net/favicon-checker).

Individual skills in this repo

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

Adamparishspok/skills

Make a website, web app or online store ready for AI agents. Scan it with Cloudflare's Agent Readiness checks, decide which checks apply to this kind of site, ship the discovery files and headers in priority order, and add the AI-first basics the scanner does not score (server-rendered content, JSON-LD, llms.txt). Covers robots.txt AI rules, Content Signals, sitemap, Markdown for Agents (Accept text/markdown), Link headers, API catalog, OAuth discovery, auth.md, MCP server card, A2A agent card, agent skills index, WebMCP, and commerce protocols (ACP, UCP, AP2, MPP, x402). Use when making a site AI-ready, agent-ready or AI-first, or fixing an isitagentready.com or Cloudflare Agent Readiness report. Triggers on: AI ready, agent ready, AI-first, agent readiness, isitagentready, AI Crawl Control, Markdown for Agents, text/markdown, llms.txt, GPTBot, ClaudeBot, AI crawlers, Content-Signal, ai-train, api-catalog, .well-known, oauth-protected-resource, auth.md, MCP server card, agent card, agent skills, WebMCP, a...

Adamparishspok/skills

Give an interface one shared tempo and a small vocabulary of hover and state micro-interactions: duration tiers (tap/pop/hover/card/layout) for CSS and Motion, swap hand-offs, rows whose highlight grows in, trailing arrows, chevron nudges, card lifts without translate, scroll-edge fades, and icon/label swaps for copy and toggle buttons. Use when animations feel inconsistent, durations are scattered magic numbers, hovers only change colour, or a product feels flat or unfinished. Triggers on: animation duration, transition timing, hover state, micro-interaction, polish, copy button feedback, menu icon to close, back arrow, card hover, scroll fade, motion tokens, Framer Motion durations.

Adamparishspok/skills

Consolidate several apps or prototypes onto one shared component library without flattening their looks. Covers finding duplicated local components (buttons, selects, fields, modals, pagers, toasts), making shared components token-sized so each suite or app sets its own measurements, mapping variant names, deciding what stays app-specific, and the tailwind-merge traps that silently break custom tokens. Use when several apps each grew their own Btn/Select/Modal, when a design system's components "don't fit" a second product, or when retheming a family of apps. Triggers on: shared component library, design system consolidation, duplicate components, retheme, suite of apps, shadcn retokened, token-driven components, cn tailwind-merge custom tokens, variant mapping.

Adamparishspok/skills

Build or migrate a UI's neutral palette (grounds, surfaces, lines, ink/text) as an OKLCH formula driven by a few inputs instead of dozens of hand-picked hex values, with light and dark themes, per-step ladder overrides, a fit script that reproduces existing colours, and a browser contrast audit. Use when creating a theme, adding dark mode, retinting a product, auditing text contrast, or consolidating several apps' palettes. Triggers on: palette, neutrals, grey ramp, dark mode, theme tokens, oklch, retint, hue, contrast audit, design tokens, Tailwind @theme colours.

Habilidades Relacionadas