Communitygithub.com

Scaffold — Andaime de Projetos

Geração de boilerplate e modelos de projetos para tipos comuns de projeto, com padrões recomendados. Use para: scaffold, boilerplate, template, novo projeto, init, criar projeto, iniciador, configuração, estrutura de projeto, estrutura de diretórios, monorepo, microsserviço, template de API, template de web app, template de CLI, template de biblioteca.

O que é Scaffold — Andaime de Projetos?

Este skill, chamado Scaffold, atua como um assistente especializado em scaffolding de projetos para desenvolvedores. Ele fornece uma árvore de decisão para escolher o tipo de projeto (API, Web App, CLI, Biblioteca ou Monorepo) e recomenda tecnologias modernas e padrões recomendados para cada combinação. Suporta múltiplas plataformas, incluindo Claude Code, Cursor e Codex, e é particularmente útil para iniciar novos projetos rapidamente, garantindo uma estrutura de diretórios limpa, configurações de ferramentas (como linters e test runners) e dependências iniciais. O usuário pode descrever o que deseja construir (ex.: "uma API REST em Python com FastAPI") e o skill gera comandos de terminal e esboços de arquivos, além de oferecer uma lista de verificação de itens comuns a adicionar (como CI/CD, Docker e documentação).

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/anubhavg-icpl/vibe/tree/HEAD/skills/cmods-scaffold

Perguntar na sua IA favorita

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

Documentação

O que Scaffold — Andaime de Projetos faz?

Modelos de scaffolding de projetos e geração de boilerplate para tipos comuns de projeto, com padrões recomendados.

Árvore de Decisão de Tipo de Projeto

O que você está construindo?
│
├─ API / Serviço Backend
│  ├─ API REST
│  │  ├─ Python → FastAPI (assíncrono, documentação automática OpenAPI)
│  │  ├─ Node.js → Express ou Fastify (Fastify para performance)
│  │  ├─ Go → Gin (ergonômico) ou Echo (rico em middleware)
│  │  └─ Rust → Axum (ecossistema tower, assíncrono primeiro)
│  ├─ API GraphQL
│  │  ├─ Python → Strawberry + FastAPI
│  │  ├─ Node.js → Apollo Server ou Pothos + Yoga
│  │  ├─ Go → gqlgen (código-primeiro)
│  │  └─ Rust → async-graphql + Axum
│  └─ Serviço gRPC
│     ├─ Python → grpcio + protobuf
│     ├─ Go → google.golang.org/grpc
│     └─ Rust → tonic
│
├─ Aplicação Web
│  ├─ Full-stack com SSR
│  │  ├─ Ecossistema React → Next.js 14+ (App Router)
│  │  ├─ Ecossistema Vue → Nuxt 3
│  │  ├─ Ecossistema Svelte → SvelteKit
│  │  └─ Com muito conteúdo / multi-framework → Astro
│  ├─ SPA (apenas cliente)
│  │  ├─ React → Vite + React + React Router
│  │  ├─ Vue → Vite + Vue + Vue Router
│  │  └─ Svelte → Vite + Svelte + svelte-routing
│  └─ Site Estático
│     ├─ Blog / documentação → Astro ou VitePress
│     └─ Marketing / landing → Astro ou Next.js (exportação estática)
│
├─ Ferramenta CLI
│  ├─ Python → Typer (simples) ou Click (complexo)
│  ├─ Node.js → Commander + Inquirer
│  ├─ Go → Cobra + Viper
│  └─ Rust → Clap (API derive)
│
├─ Biblioteca / Pacote
│  ├─ Pacote npm → TypeScript + tsup + Vitest
│  ├─ Pacote PyPI → uv + pyproject.toml + pytest
│  ├─ Módulo Go → go mod init + go test
│  └─ Crate Rust → cargo init --lib + cargo test
│
└─ Monorepo
   ├─ JavaScript/TypeScript → Turborepo + pnpm workspaces
   ├─ Full-stack JS → Nx
   ├─ Go → Go workspaces (go.work)
   ├─ Rust → Cargo workspaces
   └─ Python → uv workspaces ou hatch

Matriz de Seleção de Stack

Tipo de ProjetoLinguagemFrameworkBanco de DadosORM/QueryAlvo de Deploy
API RESTPythonFastAPIPostgreSQLSQLAlchemy + AlembicDocker / AWS ECS
API RESTNode.jsFastifyPostgreSQLPrisma ou DrizzleDocker / Vercel
API RESTGoGinPostgreSQLsqlx (puro) ou GORMDocker / Fly.io
API RESTRustAxumPostgreSQLsqlxDocker / Fly.io
Web AppTypeScriptNext.js 14+PostgreSQLPrisma ou DrizzleVercel / Docker
Web AppTypeScriptNuxt 3PostgreSQLPrismaVercel / Netlify
Web AppTypeScriptAstroSQLite / nenhumDrizzleCloudflare / Netlify
Ferramenta CLIPythonTyperSQLitesqlite3 stdlibPyPI
Ferramenta CLIGoCobraSQLite / BoltDBsqlxGitHub Releases
Ferramenta CLIRustClapSQLiterusqlitecrates.io
BibliotecaTypeScripttsupn/an/anpm
BibliotecaPythonhatch/uvn/an/aPyPI

Comandos Rápidos de Scaffold

Python (API)

# FastAPI com uv
mkdir my-api && cd my-api
uv init --python 3.12
uv add fastapi uvicorn sqlalchemy alembic psycopg2-binary pydantic-settings
uv add --dev pytest pytest-asyncio httpx ruff mypy

Node.js (Web App)

# Next.js 14+
npx create-next-app@latest my-app --typescript --tailwind --eslint --app --src-dir --import-alias "@/*"

# Vite + React
npm create vite@latest my-app -- --template react-ts

Go (API)

mkdir my-api && cd my-api
go mod init github.com/user/my-api
go get github.com/gin-gonic/gin
go get github.com/jmoiron/sqlx
go get github.com/lib/pq

Rust (CLI)

cargo init my-cli
cd my-cli
cargo add clap --features derive
cargo add serde --features derive
cargo add anyhow tokio --features tokio/full

Monorepo (Turborepo)

npx create-turbo@latest my-monorepo
# Ou manual:
mkdir my-monorepo && cd my-monorepo
npm init -y
npm install turbo --save-dev
mkdir -p apps/web apps/api packages/shared

Modelo de Projeto de API

Estrutura de Diretórios (Exemplo FastAPI)

my-api/
├── src/
│   └── my_api/
│       ├── __init__.py
│       ├── main.py              # App FastAPI, lifespan, middleware
│       ├── config.py            # Configuração pydantic-settings
│       ├── database.py          # Engine SQLAlchemy, sessão
│       ├── dependencies.py      # Dependências compartilhadas do FastAPI
│       ├── routers/
│       │   ├── __init__.py
│       │   ├── health.py        # Endpoint de health check
│       │   └── users.py         # Endpoints CRUD de usuários
│       ├── models/
│       │   ├── __init__.py
│       │   └── user.py          # Modelos SQLAlchemy
│       ├── schemas/
│       │   ├── __init__.py
│       │   └── user.py          # Schemas Pydantic de requisição/resposta
│       └── services/
│           ├── __init__.py
│           └── user.py          # Lógica de negócio
├── alembic/
│   ├── alembic.ini
│   ├── env.py
│   └── versions/
├── tests/
│   ├── conftest.py              # Fixtures: DB de testes, cliente, factories
│   ├── test_health.py
│   └── test_users.py
├── pyproject.toml
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── .gitignore
└── .dockerignore

Estrutura de Diretórios (Exemplo Express/Fastify)

my-api/
├── src/
│   ├── index.ts                 # Ponto de entrada, inicialização do servidor
│   ├── app.ts                   # Configuração do app Express/Fastify
│   ├── config.ts                # Configuração de ambiente com validação zod
│   ├── database.ts              # Cliente Prisma ou configuração Drizzle
│   ├── middleware/
│   │   ├── auth.ts
│   │   ├── error-handler.ts
│   │   └── request-logger.ts
│   ├── routes/
│   │   ├── health.ts
│   │   └── users.ts
│   ├── services/
│   │   └── user.service.ts
│   └── types/
│       └── index.ts
├── prisma/
│   └── schema.prisma
├── tests/
│   ├── setup.ts
│   └── routes/
│       └── users.test.ts
├── package.json
├── tsconfig.json
├── Dockerfile
├── docker-compose.yml
├── .env.example
└── .gitignore

Modelo de Projeto de Web App

Estrutura de Diretórios (Next.js App Router)

my-app/
├── src/
│   ├── app/
│   │   ├── layout.tsx           # Layout raiz
│   │   ├── page.tsx             # Página inicial
│   │   ├── loading.tsx          # UI de loading global
│   │   ├── error.tsx            # Boundary de erro global
│   │   ├── not-found.tsx        # Página 404
│   │   ├── globals.css          # Estilos globais + Tailwind
│   │   ├── (auth)/
│   │   │   ├── login/page.tsx
│   │   │   └── register/page.tsx
│   │   ├── dashboard/
│   │   │   ├── layout.tsx
│   │   │   └── page.tsx
│   │   └── api/
│   │       └── health/route.ts
│   ├── components/
│   │   ├── ui/                  # Primitivas reutilizáveis
│   │   └── features/            # Componentes específicos de funcionalidades
│   ├── lib/
│   │   ├── db.ts                # Cliente de banco de dados
│   │   ├── auth.ts              # Helpers de autenticação
│   │   └── utils.ts             # Utilitários compartilhados
│   └── types/
│       └── index.ts
├── public/
│   └── favicon.ico
├── tests/
│   ├── setup.ts
│   └── components/
├── next.config.ts
├── tailwind.config.ts
├── tsconfig.json
├── package.json
├── .env.local.example
└── .gitignore

Modelo de Projeto de Ferramenta CLI

Estrutura de Diretórios (Python / Typer)

my-cli/
├── src/
│   └── my_cli/
│       ├── __init__.py
│       ├── __main__.py          # Entrada python -m my_cli
│       ├── cli.py               # App Typer, grupos de comandos
│       ├── commands/
│       │   ├── __init__.py
│       │   ├── init.py          # my-cli init
│       │   └── run.py           # my-cli run
│       ├── config.py            # Carregamento de arquivo de config (TOML/YAML)
│       └── utils.py
├── tests/
│   ├── conftest.py
│   └── test_commands.py
├── pyproject.toml               # Ponto de entrada [project.scripts]
├── .gitignore
└── README.md

Estrutura de Diretórios (Go / Cobra)

my-cli/
├── cmd/
│   ├── root.go                  # Comando raiz, flags globais
│   ├── init.go                  # my-cli init
│   └── run.go                   # my-cli run
├── internal/
│   ├── config/
│   │   └── config.go            # Carregamento de config Viper
│   └── runner/
│       └── runner.go            # Lógica central
├── main.go                      # Ponto de entrada, chama cmd.Execute()
├── go.mod
├── go.sum
├── Makefile
└── .gitignore

Modelo de Projeto de Biblioteca

Estrutura de Diretórios (Pacote npm)

my-lib/
├── src/
│   ├── index.ts                 # Exportações da API pública
│   ├── core.ts                  # Implementação central
│   └── types.ts                 # Definições de tipos públicos
├── tests/
│   └── core.test.ts
├── package.json                 # "type": "module", mapa de exports
├── tsconfig.json                # declaration: true, declarationMap: true
├── tsup.config.ts               # Config de build: cjs + esm
├── vitest.config.ts
├── .npmignore
├── .gitignore
├── CHANGELOG.md
└── LICENSE

Estrutura de Diretórios (Pacote PyPI)

my-lib/
├── src/
│   └── my_lib/
│       ├── __init__.py          # API pública, __version__
│       ├── core.py
│       └── py.typed             # Marcador PEP 561
├── tests/
│   ├── conftest.py
│   └── test_core.py
├── pyproject.toml               # Sistema de build, metadados, config de ferramentas
├── .gitignore
├── CHANGELOG.md
└── LICENSE

Modelo de Monorepo

Turborepo + pnpm Workspaces

my-monorepo/
├── apps/
│   ├── web/                     # Frontend Next.js
│   │   ├── src/
│   │   ├── package.json         # depende de @repo/shared
│   │   └── tsconfig.json        # extends ../../tsconfig.base.json
│   └── api/                     # Backend Fastify
│       ├── src/
│       ├── package.json
│       └── tsconfig.json
├── packages/
│   ├── shared/                  # Tipos, utilitários e validadores compartilhados
│   │   ├── src/
│   │   ├── package.json         # "name": "@repo/shared"
│   │   └── tsconfig.json
│   ├── ui/                      # Componentes React compartilhados
│   │   ├── src/
│   │   └── package.json         # "name": "@repo/ui"
│   └── config/                  # Configurações compartilhadas
│       ├── eslint/
│       ├── typescript/
│       └── package.json
├── turbo.json                   # Pipeline: build, test, lint
├── pnpm-workspace.yaml          # packages: ["apps/*", "packages/*"]
├── package.json                 # DevDeps raiz: turbo
├── tsconfig.base.json           # Config TypeScript compartilhada
├── .gitignore
└── .npmrc

Cargo Workspaces (Rust)

my-workspace/
├── crates/
│   ├── my-core/                 # Biblioteca central
│   │   ├── src/lib.rs
│   │   └── Cargo.toml
│   ├── my-cli/                  # Binário CLI
│   │   ├── src/main.rs
│   │   └── Cargo.toml           # depende de my-core
│   └── my-server/               # Binário API
│       ├── src/main.rs
│       └── Cargo.toml
├── Cargo.toml                   # [workspace] members = ["crates/*"]
├── Cargo.lock
├── .gitignore
└── rust-toolchain.toml

Lista de Verificação de Adições Comuns

Configuração do projeto concluída? Adicione estas:
│
├─ Controle de Versão
│  ├─ [ ] .gitignore (específico da linguagem)
│  ├─ [ ] .gitattributes (finais de linha, arquivos binários)
│  └─ [ ] Regras de proteção de branch
│
├─ CI/CD
│  ├─ [ ] Workflow do GitHub Actions (testar no PR, implantar no merge)
│  ├─ [ ] Testes em matriz (SO, versões de runtime)
│  └─ [ ] Automação de release
│
├─ Docker
│  ├─ [ ] Dockerfile multi-estágio
│  ├─ [ ] docker-compose.yml (app + banco de dados + cache)
│  ├─ [ ] .dockerignore
│  └─ [ ] Endpoint de health check
│
├─ Qualidade de Código
│  ├─ [ ] Linter (ESLint, Ruff, golangci-lint, Clippy)
│  ├─ [ ] Formatador (Prettier, Black/Ruff, gofmt, rustfmt)
│  ├─ [ ] Hooks de pré-commit (Husky, pre-commit)
│  └─ [ ] Verificação de tipos (TypeScript strict, mypy, go vet)
│
├─ Testes
│  ├─ [ ] Framework de teste configurado (Vitest, pytest, go test)
│  ├─ [ ] Relatório de cobertura
│  ├─ [ ] Configuração de banco de dados de teste
│  └─ [ ] Pipeline de teste no CI
│
├─ Editor
│  ├─ [ ] .editorconfig
│  ├─ [ ] .vscode/settings.json
│  └─ [ ] .vscode/extensions.json
│
└─ Documentação
   ├─ [ ] README.md (descrição do projeto, configuração, uso)
   ├─ [ ] CONTRIBUTING.md
   └─ [ ] Documentação da API (OpenAPI, godoc, rustdoc)

Modelos de Arquivos de Configuração

.editorconfig (Universal)

root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.{py,rs}]
indent_size = 4

[*.go]
indent_style = tab

[*.md]
trim_trailing_whitespace = false

[Makefile]
indent_style = tab

pyproject.toml (Python)

[project]
name = "my-project"
version = "0.1.0"
requires-python = ">=3.12"

[tool.ruff]
target-version = "py312"
line-length = 88

[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "SIM"]

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"

[tool.mypy]
strict = true

tsconfig.json (TypeScript - Estrito)

{
  "compilerOptions": {
    "target": "ES2022",
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "resolveJsonModule": true,
    "declaration": true,
    "declarationMap": true,
    "sourceMap": true,
    "outDir": "./dist",
    "rootDir": "./src"
  },
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}

Pegadinhas Comuns

PegadinhaPor Que AcontecePrevenção
.gitignore errado para a linguagemUsou template genérico, faltando entradas específicas da linguagemUse gitignore.io ou os templates do GitHub para sua stack
Esqueceu .env.exampleMembros da equipe não sabem quais variáveis de ambiente são necessáriasCrie .env.example com cada variável (valores vazios) no início do projeto
Nenhum lockfile commitadoVersões de dependências inconsistentes entre ambientesCommit package-lock.json, uv.lock, go.sum, Cargo.lock
Porta/host fixados no códigoFunciona localmente, quebra no Docker/cloudSempre leia de variável de ambiente com valor padrão sensato
Testes acoplados a banco de dados realTestes falham sem banco rodando, configuração de CI é complexaUse contêineres de teste ou SQLite em memória para testes unitários
Endpoint de health check ausenteOrquestrador de deploy não consegue verificar prontidãoAdicione endpoint /health

Individual skills in this repo

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

anubhavg-icpl/vibe

|. Use when you need help with 8 bit orbit video template. Hyperframes-based video template for retro pixel deck motion design. Use when users want a high-fidelity, multi-scene HTML-to-video composition with advanced transitions, interactive preview controls, and ready-to-render default style.

anubhavg-icpl/vibe

Reference DESIGN.md for luxury automotive editorial that needs to feel engineered. White slabs, full-bleed performance photography, BMW corporate blue rising into a deeper blue at active states, restrained Helvetica-grade typography. Use when building UI components, applying design tokens, or implementing visual styles for cinematic bmw.

anubhavg-icpl/vibe

Reference DESIGN.md for enterprise-AI brands that need to feel premium, dark, and quietly futuristic. Ink canvas, Unica grotesque type, saturated coral-to-violet brand gradient deployed as backdrop and accent rule, full-pill buttons, gen. Use when building UI components, applying design tokens, or implementing visual styles for cinematic cohere.

anubhavg-icpl/vibe

Reference DESIGN.md for performance brands that need to feel theatrical. High-contrast black-and-white frames cut by Rosso Corsa red, sharp 0-radius components, FerrariSans across the entire page, photography that treats the car as sculp. Use when building UI components, applying design tokens, or implementing visual styles for cinematic ferrari.

anubhavg-icpl/vibe

Reference DESIGN.md for hyper-luxury that needs to feel forged. True-black canvas, oversized LamboType nameplates at 120px+, hexagonal angle motifs, single warm-gold accent for primary actions, photography lit like a vault. Use when building UI components, applying design tokens, or implementing visual styles for cinematic lamborghini.

anubhavg-icpl/vibe

Reference DESIGN.md for AI-lab cinematic: pure black canvas, neon-lime accent on charcoal chrome, geometric DM Sans / Outfit type, pill-shaped CTAs. Use when building UI components, applying design tokens, or implementing visual styles for cinematic minimax.

anubhavg-icpl/vibe

Reference DESIGN.md for GPU-vendor cinematic: chrome-black canvas, signature green action, video-led hero, hard-edged grotesque headlines. Use when building UI components, applying design tokens, or implementing visual styles for cinematic nvidia.

anubhavg-icpl/vibe

Skill for discovering and researching autonomous AI agents, tools, and ecosystems using the AgentFolio directory. Use when you need help with agentfolio.

anubhavg-icpl/vibe

Build content-focused websites with Astro — zero JS by default, islands architecture, multi-framework components, and Markdown/MDX support. Use when you need help with astro.

anubhavg-icpl/vibe

Expert in building portfolios that actually land jobs and clients -. Use when you need help with interactive portfolio. not just showing work, but creating memorable experiences. Covers developer portfolios, designer portfolios, creative portfolios, and portfolios that convert visitors into opportunities.

anubhavg-icpl/vibe

Generates high-converting Next.js/React landing pages with Tailwind CSS. Uses PAS, AIDA, and BAB frameworks for optimized copy/components (Heroes, Features, Pricing). Focuses on Core Web Vitals/SEO. Use when you need help with landing page generator.

anubhavg-icpl/vibe

Generate walkthrough videos from Stitch projects using Remotion with smooth transitions, zooming, and text overlays. Use when you need help with remotion.

anubhavg-icpl/vibe

Writes complete, structured landing pages optimized for SEO ranking, AEO citation, and visitor conversion. Activate when the user wants to write or generate a landing page for a product, service, or offer.

anubhavg-icpl/vibe

Automate Klipfolio tasks via Rube MCP (Composio). Always search tools first for current schemas. Use when you need help with klipfolio automation.

anubhavg-icpl/vibe

>. Use when you need help with kami landing. Produce a print-grade single-page kami (紙 / 纸) document — warm parchment canvas, ink-blue accent, serif at one weight, no italic, no cool grays. The output reads like a professional white paper or studio one-pager, not an app UI. Multilingual by design (EN · zh-CN · ja). One self-contained HTML file, zero dependencies.

anubhavg-icpl/vibe

>. Use when you need help with open design landing deck. Produce a single-file slide deck in the Atelier Zero visual language (warm-paper background, italic-serif emphasis spans, coral terminating dots, surreal collage plates) — Open Design's brand deck recipe. The deck uses **horizontal magazine-style swipe pagination** (←/→, wheel, swipe), a per-slide chrome strip with brand mark and slide counter, an ESC overview grid, a coral progress bar, and inherits the canonical stylesheet + 16-slot image library from the sister `open-design-landing` skill.

anubhavg-icpl/vibe

>. Use when you need help with open design landing. Produce a world-class single-page editorial landing site in the Atelier Zero visual language (Monocle / Apartamento / Études editorial collage) — the same aesthetic Open Design uses for its own marketing surface. The agent fills a typed `inputs.json` from a brand brief, optionally generates 16 collage assets via gpt-image-2, then runs a pure-function composer that emits a self-contained HTML file; a separate path can mirror the Astro marketing site in `apps/landing-page/`. Drop-in scroll-reveal motion and a Headroom-style sticky nav are wired automatically.

anubhavg-icpl/vibe

>. Use when building UI with epic design language and visual style. Build immersive, cinematic 2.5D interactive websites using scroll storytelling, parallax depth, text animations, and premium scroll effects — no WebGL required. Use this skill for any web design task: landing pages, product sites, hero sections, scroll animations, parallax, sticky sections, section overlaps, floating products between sections, clip-path reveals, text that flies in from sides, words that light up on scroll, curtain drops, iris opens, card stacks, bleed typography, and any site that should feel cinematic or premium. Trigger on phrases like "make it feel alive", "Apple-style animation", "sections that overlap", "product rises between sections", "immersive", "scrollytelling", or any scroll-driven visual effect. Covers 45+ techniques across 8 categories. Always inspects, judges, and plans assets before coding. Use aggressively for ANY web design task.

anubhavg-icpl/vibe

Generates high-converting landing pages as complete Next.js/React (TSX) components with Tailwind CSS. Creates hero sections, feature grids, pricing tables, FAQ accordions, testimonial blocks, and CTA sections using proven copy frameworks (PAS, AIDA, BAB). Outputs SEO meta tags, structured data, and performance-optimised code targeting Core Web Vitals (LCP < 1s, CLS < 0.1). Use when the user asks to create a landing page, marketing page, homepage, single-page site, lead capture page, campaign page, promo page, or conversion-optimised web page — or when they want to A/B test landing page variants or replace a static page with one designed to convert.

anubhavg-icpl/vibe

Generates a premium single-page HTML landing page with 3D CSS animations, GSAP scroll effects, and mouse-parallax depth. Forcing intake (product + elevator pitch, audience register, brand overrides, tone) locks down positioning before any copy or markup is written, so the page reflects the actual product rather than generic boilerplate. Use whenever the user says 'landing for X', 'create a landing page', 'build a landing page', 'make a landing page for X', 'I need a web page for Y', or provides product/service details and wants a polished website. Also triggers on 'promotional page', 'product page', 'one-pager', 'web presence', 'sales page'. Outputs a single self-contained HTML file (Claude Code) or HTML artifact (Claude.ai). Supports configurable brand colors via CSS custom property overrides.

Habilidades Relacionadas