← 返回
未分类 中文

Builder Site institucional

Cria sites institucionais profissionais em React (Vite + TypeScript + Tailwind CSS 4) a partir de materiais de referência do cliente (logos, imagens, apresen...
使用 React (Vite + TypeScript + Tailwind CSS 4) 根据客户提供的素材(标志、图片、演示文稿等)创建专业机构网站
guedes-xtent guedes-xtent 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 381
下载
💾 0
安装
1
版本
#latest

概述

Institutional Site Builder

Skill especializada em criar sites institucionais de alta qualidade a partir de materiais

de referência do cliente. O workflow é projetado para extrair o máximo dos materiais fornecidos

(logos, identidade visual, apresentações, PDFs) e transformá-los em um site React profissional

com animações, responsividade e performance otimizada.

Stack Tecnológico

O projeto SEMPRE usa:

  • Vite (v6+) como bundler
  • React 19 + TypeScript
  • Tailwind CSS 4 via @tailwindcss/vite
  • Framer Motion para animações
  • Lucide React para ícones

Dependências opcionais (instalar conforme necessidade):

  • three + @types/three — backgrounds 3D animados (DottedSurface, shader backgrounds)
  • react-use-measure — para o InfiniteSlider (logo cloud, marquee)

Workflow em 6 Fases

Fase 1: Exploração e Inventário de Materiais

Antes de escrever qualquer código, explore TUDO que o usuário forneceu. Esta fase é crítica

porque os materiais definem o tom, as cores, o conteúdo e as imagens do site.

Organize os materiais em categorias mentais:

CategoriaO que procurarComo usar
-------------------------------------
Identidade VisualPaleta de cores (hex), tipografia, guidelinesDefine @theme no CSS, cores de accent, gradientes
LogosVariantes claro/escuro, horizontal/vertical, SVG/PNGNavbar (horizontal, claro), Footer (horizontal, claro), Favicon (ícone escuro)
Imagens de ProdutoScreenshots, mockups, fotos operacionaisFeature cards, hero background, timeline, scroll media
ApresentaçõesPPTs, PDFs com slidesEXTRAIR textos, headlines, bullet points, estrutura de seções
Componentes UIArquivos .txt com código React de referênciaAdaptar para o projeto (remover deps de shadcn, Next.js)
Dados de ContatoE-mails, telefones, redes sociais, endereçosFooter, seção contato, WhatsApp flutuante
Logos de ClientesLogos de empresas parceiras/clientesSeção de social proof com InfiniteSlider

Checklist de exploração:

  1. ls -la recursivo em toda a pasta do usuário
  2. Ler TODAS as imagens com o Read tool (logos, identidade visual, slides-chave)
  3. Ler PDFs/PPTs para extrair conteúdo textual
  4. Identificar paleta de cores exata (hex codes)
  5. Mapear quais imagens servem para quais seções
  6. Anotar dados de contato, nomes de produtos, taglines

Fase 2: Planejamento do Site

Após inventariar, pergunte ao usuário usando AskUserQuestion:

  1. Idioma — PT-BR, EN, ou bilíngue?
  2. Seções — Completo (Hero, Problema, Solução, Features, Benefícios, Clientes, CTA, Contato, Footer) ou simplificado?
  3. Estilo visual — Dark premium, Light/clean, ou Híbrido?
  4. Contato — Formulário + WhatsApp, apenas links, ou formulário completo?

A maioria dos sites institucionais B2B segue esta ordem de seções (ajustar conforme necessidade):

1. Navbar (fixa, com blur no scroll)
2. Hero (proposta de valor + CTA)
3. Contexto/Problema (por que o produto existe)
4. Solução (o que o produto faz)
5. Pipeline/Processo (como funciona, passo a passo)
6. Funcionalidades (feature cards com imagens)
7. Detalhes técnicos (IoT, integrações, etc.)
8. Benefícios (cards por categoria)
9. Canais de Entrega (integrações multicanal)
10. Clientes (logo cloud com social proof) ← antes do CTA
11. CTA Final (frase de impacto + botão)
12. Contato (formulário + dados)
13. Footer (links, logo, copyright)
14. WhatsApp Flutuante

Fase 3: Setup do Projeto

npm create vite@latest <nome-site> -- --template react-ts
cd <nome-site>
npm install
npm install -D tailwindcss @tailwindcss/vite --legacy-peer-deps
npm install framer-motion lucide-react

Configurar vite.config.ts:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import tailwindcss from '@tailwindcss/vite'

export default defineConfig({
  plugins: [react(), tailwindcss()],
  build: {
    rollupOptions: {
      output: {
        manualChunks: {
          // Adicionar conforme libs pesadas são usadas
          'framer-motion': ['framer-motion'],
        },
      },
    },
  },
})

Configurar src/index.css com a paleta do cliente:

@import "tailwindcss";

@theme {
  /* Cores extraídas da identidade visual do cliente */
  --color-primary-900: #XXXXXX;
  --color-primary-800: #XXXXXX;
  /* ... mapear toda a paleta ... */
  --color-accent: #XXXXXX;
  --font-sans: 'Inter', system-ui, sans-serif;
}

Configurar index.html:

  • lang correto (pt-BR ou en)
  • Meta description com o produto
  • Google Fonts com defer (NÃO render-blocking):

```html

```

Copiar assets:

  • Criar public/images/ e copiar todas as imagens do produto
  • Criar public/images/clientes/ se houver logos de clientes
  • Copiar logos (preferir variante horizontal para navbar)

Fase 4: Construção do Site

Construir o site inteiro em um único App.tsx (para sites de até ~800 linhas).

Para sites maiores, criar componentes em src/components/.

Padrões obrigatórios em TODAS as imagens:

<img src="..." alt="Descrição" width={N} height={N} loading="lazy" />

Componentes utilitários a incluir:

  • useInView() — Intersection Observer para animações de entrada
  • Section — wrapper que anima opacity+translateY no scroll
  • TextCycle — texto que alterna entre palavras com animação slideUp

Para cada seção, consultar references/components.md que contém templates

prontos adaptados para o stack (sem dependências de shadcn, Next.js, ou cn()).

Fase 5: Otimização de Performance (OBRIGATÓRIA)

Esta fase é executada ANTES de entregar o site ao usuário.

5.1 Imagens — Converter para WebP:

from PIL import Image
import glob, os
for f in glob.glob("public/images/*.png") + glob.glob("public/images/*.jpg"):
    if os.path.getsize(f) > 100_000:
        img = Image.open(f)
        if img.width > 1200:
            ratio = 1200 / img.width
            img = img.resize((1200, int(img.height * ratio)), Image.LANCZOS)
        img.save(f.rsplit('.', 1)[0] + '.webp', 'WEBP', quality=80)

Atualizar todas as referências no código para .webp.

5.2 Fontes — Eliminar render-blocking:

Usar o pattern media="print" onload="this.media='all'" no index.html.

5.3 JavaScript — Code splitting:

  • Libs pesadas (Three.js) em lazy import + Suspense
  • manualChunks no vite.config.ts
  • O bundle JS principal deve ficar abaixo de 300KB

5.4 Acessibilidade mínima:

  • role="main" no container principal
  • alt em todas as imagens
  • width e height explícitos em todas as
  • Headings em ordem sequencial (h1 → h2 → h3)
  • Contraste suficiente entre texto e fundo

5.5 SEO básico:

  • </code> descritivo</li><li><code><meta name="description"></code> com o produto</li><li><code>lang</code> correto no <code><html></code></li></ul><h3>Fase 6: Entrega</h3><ol><li>Fazer <code>npm run build</code> e verificar que compila sem erros</li><li>Copiar o projeto completo para a pasta do usuário</li><li>Apresentar link <code>computer:///path/to/project</code></li><li>Instruir: <code>cd nome-site && npm install && npm run dev</code></li></ol><h2>Referências</h2><ul><li><code>references/components.md</code> — Catálogo completo dos 23 componentes com tabela por categoria, cheat sheet de adaptação Next.js→Vite, e templates inline prontos</li><li><code>references/components/</code> — Os 23 arquivos .txt originais com código TSX completo, demo e dependências de cada componente</li><li><code>references/patterns.md</code> — Padrões de CSS, animações, glass morphism, gradients, otimização de imagens</li></ul><h3>Componentes Disponíveis (31 — 23 originais + 8 do 21st.dev)</h3><p><strong>Heroes:</strong> Glassmorphism Trust Hero, 3D Hero (Spline), Scroll Expand Media</p><p><strong>Backgrounds:</strong> Animated Shader (GLSL Aurora), Flow Field (Canvas 2D), Dotted Surface (Three.js)</p><p><strong>Navigation:</strong> Tubelight Navbar, Limelight Nav (dark mode)</p><p><strong>Cards:</strong> Glowing Effect Border, Bauhaus Card, Bento Grid</p><p><strong>Content:</strong> Timeline (scroll-based), Vertical Tabs, DB/API Diagram, Global Map, Logo Cloud (InfiniteSlider)</p><p><strong>Animations:</strong> Text Cycle, Loading Skeleton, Container Scroll 3D, Notification Alert</p><p><strong>Utility:</strong> Page 404, Footer, Password Confirmation</p><p><strong>21st.dev Extras:</strong> Starfall Portfolio Landing, Parallax Feature Section, Metaball Hero, Rotating Prompts, Collapsible Header, Image Card, Spotlight, Accordion</p><p>Para usar qualquer componente, leia <code>references/components.md</code> para o catálogo e depois</p><p>leia o <code>.txt</code> correspondente em <code>references/components/</code> (originais) ou <code>references/components/21st-dev/</code> (extras).</p><p>Para buscar mais componentes do 21st.dev, use a API: <code>POST /api/prompts</code> com <code>{"prompt_type":"extended","demo_id":<ID>}</code>. Ver instruções completas em <code>references/components.md</code>.</p><h2>Organização de Pasta Esperada do Usuário</h2><p>Quando o usuário fornecer materiais, a skill espera (ou sugere) esta organização:</p><pre><code>materiais-projeto/ ├── logos/ ← Variantes do logo (claro, escuro, horizontal, vertical) ├── identidade-visual/ ← Paleta de cores, guidelines, tipografia ├── imagens/ ← Fotos, screenshots, mockups do produto ├── apresentacoes/ ← PPTs, PDFs com conteúdo do produto ├── clientes/ ← Logos de empresas clientes/parceiras ├── components/ ← Componentes UI de referência (.txt com código React) └── copy/ ← Textos, taglines, descrições (se houver separado) </code></pre><p>Se os materiais estiverem desorganizados, a skill navega e cataloga tudo mesmo assim.</p><p>Mas se o usuário perguntar "como organizar?", sugira esta estrutura.</p></div> </div> </div> <div id="tab-versions" class="detail-content"> <div class="detail-section"> <h2>版本历史</h2> <p style="margin-bottom:12px;font-size:14px;color:#94a3b8;">共 1 个版本</p> <ul class="version-list"> <li> <div> <span class="version-tag">v1.0.0</span> <span style="font-size:11px;color:#5b6abf;margin-left:8px;background:#eef0ff;padding:1px 8px;border-radius:10px;">当前</span> </div> <div style="font-size:12px;color:#94a3b8;"> 2026-05-03 08:40 安全 安全 </div> </li> </ul> </div> </div> <div id="tab-security" class="detail-content"> <div class="detail-section"> <h2>安全检测</h2> <div class="sec-grid"> <div class="sec-card"> <h4>腾讯云安全 (Keen)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://tix.qq.com/search/skill?keyword=1c00002204d2c50f6edd8ded94fc86a3" target="_blank">查看报告</a> </div> <div class="sec-card"> <h4>腾讯云安全 (Sanbu)</h4> <div class="sec-status sec-safe"> 安全,无风险 </div> <a href="https://static.cloudsec.tencent.com/html-report-v2/2026/05/26/431282_f90207fe5af038d7f31fc63e99e0e333.html?q-sign-algorithm=sha1&q-ak=AKID8JMG1bzBC1dz96qNhssfFftujT1NCoFi&q-sign-time=1782172034%3B1813708034&q-key-time=1782172034%3B1813708034&q-header-list=host&q-url-param-list=&q-signature=8d4866d401848c1dfcc4e4d2335963fc9388d900" target="_blank">查看报告</a> </div> </div> </div> </div> <!-- Recommended Skills --> <div style="margin-top:24px;"> <h2 style="font-size:18px;font-weight:600;margin-bottom:16px;">🔗 相关推荐</h2> <div class="rec-grid"> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">dev-programming</span> <h3><a href="/s/youtube-api-skill">YouTube</a></h3> <div class="rec-owner">byungkyu</div> <div class="rec-desc">使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 142</span> <span style="color:#5b6abf;">📥 41,629</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">dev-programming</span> <h3><a href="/s/mcporter">Mcporter</a></h3> <div class="rec-owner">steipete</div> <div class="rec-desc">使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 195</span> <span style="color:#5b6abf;">📥 67,692</span> </div> </div> <div class="rec-card"> <span class="badge-cat" style="margin-bottom:8px;display:inline-block;">dev-programming</span> <h3><a href="/s/codeconductor">CodeConductor.ai</a></h3> <div class="rec-owner">larsonreever</div> <div class="rec-desc">AI驱动平台,提供快速全栈开发、智能体、工作流自动化及低代码AI集成的可扩展产品创建。</div> <div class="rec-stats"> <span style="color:#f39c12;">★ 72</span> <span style="color:#5b6abf;">📥 181,938</span> </div> </div> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded',function(){ document.querySelectorAll('.detail-tab').forEach(function(btn){ btn.addEventListener('click',function(e){ var tab = this.getAttribute('data-tab'); document.querySelectorAll('.detail-tab').forEach(function(b){b.classList.remove('active')}); document.querySelectorAll('.detail-content').forEach(function(c){c.classList.remove('active')}); this.classList.add('active'); var el = document.getElementById('tab-'+tab); if(el) el.classList.add('active'); }); }); }); </script> <div class="footer"> <p>Skill工具集 © 2026</p> </div></body> </html>