Communitygithub.com

ahmedbinirfan/mcmaster-fast

Aplique técnicas inspiradas no McMaster-Carr para tornar sites instantâneos: renderização HTML-first, navegação com app-shell, pré-busca por intenção, cache em camadas, CSS crítico, JS específico por página e estabilidade de layout. Use quando o usuário quiser um site extremamente rápido ou responsivo, mencionar McMaster-Carr / mcmaster.com, páginas instantâneas, pré-busca ao passar o mouse ou pedir para implementar essas técnicas em outro site.

O que é mcmaster-fast?

Este skill ensina a replicar as técnicas de desempenho extremo do site McMaster-Carr (mcmaster.com) em qualquer outra aplicação web, independentemente do framework ou stack. A abordagem prioriza a entrega de HTML que o navegador pode renderizar imediatamente, sem depender de JavaScript para a primeira pintura, e utiliza uma navegação baseada em shell persistente que troca apenas o conteúdo principal, mantendo cabeçalhos e menus montados. O skill organiza as otimizações em uma escada de prioridade de oito degraus, orientando o agente a parar no primeiro degrau que atinja um LCP (Largest Contentful Paint) abaixo de 200ms em cache aquecido. As técnicas incluem: inline de CSS crítico, pré-carga de fontes e imagens LCP, versionamento de assets estáticos para cache imutável de um ano, pré-busca por intenção (hover/visor), service worker focado apenas em navegações GET, e divisão de JavaScript por rota. O skill também estabelece regras rígidas: HTML é o produto, JavaScript é melhoria opcional; pré-busca nunca deve incluir páginas de checkout, APIs de busca ou HTML autenticado; scripts de terceiros são considerados culpados por padrão e devem ser removidos ou adiados. O agente é instruído a traçar o carregamento real da página, aplicar um degrau por vez, e verificar métricas como LCP, FCP e CLS após cada mudança.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add ahmedbinirfan/mcmaster-fast

Perguntar na sua IA favorita

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

Documentação

O que mcmaster-fast faz?

Faça outros sites parecerem com mcmaster.com: primeira pintura em dezenas de milissegundos, próxima página antes mesmo da barra de URL atualizar.

A stack não importa. McMaster faz isso com ASP.NET, YUI e um ScriptCombiner. A ordem e a quantidade de requisições importam. Modismo de framework não importa.

O que eles realmente fazem

Observado no site ao vivo (2026-09-13) mais a análise de Wes Bos (notas do klinke.studio):

CamadaO que McMaster fazPor que parece instantâneo
Primeiro byteHTML renderizado no servidor. Navegador pinta antes do JS. FCP ~64ms, TTFB ~19ms em um shell aquecido.O usuário vê uma página, não um spinner esperando por um bundle.
Shell#ShellLayout_Cntnr + #MainContent. Cabeçalho/carrinho permanecem montados. history.pushState.O clique na categoria manteve o mesmo nó do cabeçalho e trocou o conteúdo em 35ms.
PreverA passagem do mouse/intenção busca o próximo HTML antes do clique.O clique é um cache hit + troca de DOM.
Visita repetidaService worker cache-first para navegações GET (não PDFs). Cache manteve / após o primeiro carregamento.HTML de origem é ~200ms (mc-turn); SW serve localmente.
Waterfalldns-prefetch para hosts de imagens. preload para fontes woff2, logotipo, sprites LCP, JS/CSS da página, ShellDynamic.aspx.O navegador inicia o download de fontes/LCP antes de descobri-los no CSS.
CSS~32KB de CSS comum inline em <style> no <head>. Restante via um combinador específico da página.O primeiro layout não precisa de requisição CSS extra.
JSBundles ScriptCombiner específicos da página (?files=...). Assíncrono. WebParts carregam após a pintura.A página de catálogo não baixa código de checkout.
AssetsURLs versionadas (/mv1789156784/, ?ver=). Cache-Control: public,immutable,max-age=31536000. Host de imagens images1.mcmaster.com. Sprites para grades de tiles.Cache de um ano, sem dança de invalidação, poucas requisições.
EstabilidadeCaixas reservadas / sprites. CLS medido 0.Sem reflowenquanto as imagens chegam.
PesoAnalytics próprio (/trk/). Sem anúncios. CSP restrito a *.mcmaster.com.A página é o produto.

Os documentos HTML em si têm Cache-Control: no-cache e x-check-cacheable: NO no Akamai. Não copie "CDN-cache para todo HTML". Eles armazenam em cache o shell no navegador e armazenam em cache arquivos estáticos imutáveis na borda.

Escada de prioridade

Pare no primeiro degrau que deixar a página com LCP abaixo de ~200ms em cache aquecido. Não instale Workbox, um pipeline de sprites e Regras de Especulação em um único PR.

  1. Envie HTML que o navegador pode pintar. SSR ou HTML estático. Nada de renderização somente cliente para a primeira visualização. Mate o JS que constrói a primeira tela.
  2. Desbloqueie a primeira pintura. Coloque inline apenas o CSS acima da dobra (ou uma pequena folha bloqueante). Faça preload da imagem LCP e das fontes woff2 (crossorigin). width/height (ou CSS aspect-ratio) em toda imagem.
  3. Arquivos estáticos imutáveis. Fingerprint ou query de versão. Cache-Control: public, immutable, max-age=31536000.
  4. Chrome persistente + troca de conteúdo. Layout compartilhado. A próxima navegação substitui um nó de conteúdo e faz pushState. Não remonte o cabeçalho.
  5. Pré-busca por intenção. Documento seguinte especulado ao passar o mouse/entrar no viewport. Limite o número. Nunca pré-busque checkout, APIs de busca ou HTML autenticado.
  6. SW de navegação (opcional). Cache-first para navegações GET no shell/página inicial pública. Limpe ao fazer deploy. Invalide a partir da página, não de um SW esperto. Pule se o site for majoritariamente privado.
  7. JS específico da página. Divisão por rota. Adie analytics até ocioso. Remova tags de terceiros que não sejam o produto.
  8. Sprites / host de imagens somente se você tiver dezenas de ícones pequenos em uma única visualização. HTTP/2 + algumas imagens comprimidas é suficiente abaixo disso.

Fluxo de trabalho do agente

Quando solicitado a tornar um site rápido dessa forma:

  1. Trace o primeiro carregamento real e uma navegação dentro do aplicativo (rede + o que é pintado). Nomeie o elemento LCP atual e o JS que o bloqueia.
  2. Aplique o degrau mais baixo da escada que está faltando. Uma alteração por passada, a menos que o usuário tenha solicitado uma varredura completa.
  3. Prefira recursos de plataforma já existentes no repositório (Next <Link>, next/font, layouts do App Router) em vez de novas bibliotecas.
  4. Após uma passada, deixe uma verificação: números de LCP / FCP, ou uma pequena afirmação de que o nó do shell é reutilizado em uma navegação cliente.
  5. Leia techniques.md para a receita exata do degrau que você está implementando. Leia recipes.md para mapeamentos com Next.js / vanilla / SPA existente.

Regras rígidas

  • HTML é o produto. JS é melhoria opcional.
  • Pré-busca é uma dica, não um crawler. Apenas documentos GET de mesma origem.
  • HTML personalizado é no-store ou apenas via SW com um curto TTL. Nunca coloque HTML de carrinho/conta em um cache CDN compartilhado.
  • Não adicione um service worker que intercepte todos os assets. Apenas documentos de navegação, combinando com o ServiceWorkerJS.aspx do McMaster.
  • Não copie YUI, sprites ou ASP.NET. Copie a ordem de operações.
  • Não "modernize" uma página HTML rápida transformando-a em um SPA cliente como solução.
  • Scripts de terceiros (anúncios, gerenciadores de tags, chat) são considerados culpados. Mantenha-os fora da primeira pintura ou remova-os.
  • Marque atalhos com ponytail: quando você pular um degrau de menor valor.

Feito quando

  • Primeira visita: HTML é pintado antes de qualquer bundle do aplicativo ser executado. LCP é um elemento enviado pelo servidor, não renderizado pelo cliente.
  • Próximo clique: o chrome permanece montado; apenas a região de conteúdo é trocada.
  • Visita repetida ao shell/página inicial: servido localmente ou do cache de memória.
  • Fontes e imagem LCP estão nas primeiras 1–2 viagens de ida e volta, não descobertas após o CSS.
  • CLS permanece próximo de 0 nas páginas que você tocou.

Habilidades Relacionadas