nodejs-best-practices
Orienta seu agente nas melhores práticas de desenvolvimento Node.js. Ajuda a tomar decisões sobre arquitetura, segurança e padrões assíncronos.
O que ela faz
Este guia ensina como tomar boas decisões ao programar com Node.js, focando em entender os princípios por trás das escolhas, em vez de apenas copiar código. Ele ajuda a escolher as melhores ferramentas e abordagens para diferentes situações.
Quando usar
- ✓Ao decidir qual 'framework' (ferramenta de organização de código) usar.
- ✓Ao pensar em como organizar a estrutura do seu programa.
- ✓Ao implementar medidas de segurança.
Exemplo do que pedir para a IA
“Como posso escolher o melhor framework para uma API de alta performance em Node.js?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A IA analisa o que você precisa e sugere as melhores ferramentas e padrões de programação. Ela faz perguntas para entender seu projeto e te ajuda a pensar nas consequências de cada escolha.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill nodejs-best-practicesOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/nodejs-best-practices/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Melhores Práticas do Node.js
Princípios e tomada de decisão para desenvolvimento Node.js em 2025. Aprenda a PENSAR, não a memorizar padrões de código.
Quando Usar
Use esta habilidade ao tomar decisões de arquitetura Node.js, escolher frameworks, projetar padrões assíncronos ou aplicar melhores práticas de segurança e implantação.
⚠️ Como Usar Esta Habilidade
Esta habilidade ensina princípios de tomada de decisão, não código fixo para copiar.
- PERGUNTE ao usuário sobre preferências quando não estiver claro
- Escolha o framework/padrão com base no CONTEXTO
- Não use a mesma solução por padrão sempre
1. Seleção de Framework (2025)
Árvore de Decisão
What are you building?
│
├── Edge/Serverless (Cloudflare, Vercel)
│ └── Hono (zero-dependency, ultra-fast cold starts)
│
├── High Performance API
│ └── Fastify (2-3x faster than Express)
│
├── Enterprise/Team familiarity
│ └── NestJS (structured, DI, decorators)
│
├── Legacy/Stable/Maximum ecosystem
│ └── Express (mature, most middleware)
│
└── Full-stack with frontend
└── Next.js API Routes or tRPC
Princípios de Comparação
| Fator | Hono | Fastify | Express |
|---|---|---|---|
| Melhor para | Edge, serverless | Performance | Legado, aprendizado |
| Cold start | Mais rápido | Rápido | Moderado |
| Ecossistema | Crescente | Bom | Maior |
| TypeScript | Nativo | Excelente | Bom |
| Curva de aprendizado | Baixa | Média | Baixa |
Perguntas de Seleção a Fazer:
- Qual é o alvo de implantação?
- O tempo de cold start é crítico?
- A equipe tem experiência prévia?
- Existe código legado para manter?
2. Considerações de Runtime (2025)
TypeScript Nativo
Node.js 22+: --experimental-strip-types
├── Run .ts files directly
├── No build step needed for simple projects
└── Consider for: scripts, simple APIs
Decisão do Sistema de Módulos
ESM (import/export)
├── Modern standard
├── Better tree-shaking
├── Async module loading
└── Use for: new projects
CommonJS (require)
├── Legacy compatibility
├── More npm packages support
└── Use for: existing codebases, some edge cases
Seleção de Runtime
| Runtime | Melhor para |
|---|---|
| Node.js | Uso geral, maior ecossistema |
| Bun | Performance, bundler integrado |
| Deno | Foco em segurança, TypeScript integrado |
3. Princípios de Arquitetura
Conceito de Estrutura em Camadas
Request Flow:
│
├── Controller/Route Layer
│ ├── Handles HTTP specifics
│ ├── Input validation at boundary
│ └── Calls service layer
│
├── Service Layer
│ ├── Business logic
│ ├── Framework-agnostic
│ └── Calls repository layer
│
└── Repository Layer
├── Data access only
├── Database queries
└── ORM interactions
Por Que Isso Importa:
- Testabilidade: Simule camadas independentemente
- Flexibilidade: Troque o banco de dados sem alterar a lógica de negócios
- Clareza: Cada camada tem uma única responsabilidade
Quando Simplificar:
- Scripts pequenos → Um único arquivo OK
- Protótipos → Menos estrutura aceitável
- Sempre pergunte: "Isso vai crescer?"
4. Princípios de Tratamento de Erros
Tratamento Centralizado de Erros
Pattern:
├── Create custom error classes
├── Throw from any layer
├── Catch at top level (middleware)
└── Format consistent response
Filosofia de Resposta de Erro
Client gets:
├── Appropriate HTTP status
├── Error code for programmatic handling
├── User-friendly message
└── NO internal details (security!)
Logs get:
├── Full stack trace
├── Request context
├── User ID (if applicable)
└── Timestamp
Seleção de Código de Status
| Situação | Status | Quando |
|---|---|---|
| Entrada inválida | 400 | Cliente enviou dados inválidos |
| Sem autenticação | 401 | Credenciais ausentes ou inválidas |
| Sem permissão | 403 | Autenticação válida, mas não permitido |
| Não encontrado | 404 | Recurso não existe |
| Conflito | 409 | Duplicação ou conflito de estado |
| Validação | 422 | Esquema válido, mas regras de negócios falham |
| Erro do servidor | 500 | Culpa nossa, registre tudo |
5. Princípios de Padrões Assíncronos
Quando Usar Cada Um
| Padrão | Usar Quando |
|---|---|
async/await |
Operações assíncronas sequenciais |
Promise.all |
Operações independentes em paralelo |
Promise.allSettled |
Paralelo onde algumas podem falhar |
Promise.race |
Timeout ou a primeira resposta vence |
Consciência do Event Loop
Vinculado a I/O (async ajuda):
├── Consultas ao banco de dados
├── Requisições HTTP
├── Sistema de arquivos
└── Operações de rede
Vinculado a CPU (async não ajuda):
├── Operações criptográficas
├── Processamento de imagem
├── Cálculos complexos
…
Perguntas frequentes
O que é um 'framework'?
Um framework é um conjunto de ferramentas e regras que ajuda a organizar e acelerar o desenvolvimento de um programa, fornecendo uma estrutura pronta.
O que significa 'pensar em vez de memorizar código'?
Significa entender por que uma solução funciona e quando usá-la, em vez de apenas copiar e colar um trecho de código sem saber o motivo.
Preciso saber programar em Node.js para usar isso?
Este guia é para quem já tem alguma familiaridade com Node.js e quer tomar decisões melhores sobre como estruturar e construir seus projetos.
Detalhes
Descrição original do autor
Node.js development principles and decision-making. Framework selection, async patterns, security, and architecture. Teaches thinking, not copying.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3695
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
api-connector-builder
Faz seu agente construir novas conexões com APIs seguindo o padrão já existente. Use quando precisar adicionar mais uma integração sem criar um novo jeito de fazer.
affaan-m/ECC
api-design
Ajuda seu agente a projetar APIs REST seguindo as melhores práticas. É útil para definir como as APIs se comunicam, como os erros são mostrados e como organizar os dados.
affaan-m/ECC
backend-patterns
Ajuda seu agente com padrões de arquitetura do lado do servidor e otimização de banco de dados. É útil para construir ou revisar o código que roda no servidor.
affaan-m/ECC