{"enrichment":{"faq":[{"a":"nodejs-best-practices guides you through framework selection by matching your project context to each option's strengths. Express offers simplicity and ecosystem maturity for most APIs; Fastify prioritizes raw throughput and low overhead for performance-critical services; NestJS provides opinionated structure and TypeScript-first design for larger teams. The skill emphasizes context-aware choices\u2014consider your deployment target, team size, and performance requirements rather than adopting any framework by default.","q":"How do I choose between Express, Fastify, and NestJS?"},{"a":"nodejs-best-practices teaches you when to use async/await versus Promise.all and other patterns. Async/await excels for sequential operations and readability; Promise.all handles concurrent work efficiently. The skill covers the event loop fundamentals so you understand trade-offs: Promise.all parallelizes independent tasks, while await serializes them. Choosing the right pattern depends on whether operations are dependent or independent, and on your error-handling strategy.","q":"What async patterns should I use in Node.js?"},{"a":"nodejs-best-practices provides security principles and a practical checklist for backend development. Key areas include input validation at API boundaries, dependency scanning, secure headers, rate limiting, and secrets management. The skill emphasizes that security is architectural\u2014validation belongs at entry points, error messages should not leak internals, and dependencies need regular audits. A checklist approach ensures you don't skip critical layers as your application grows.","q":"What is a nodejs security checklist I should follow?"},{"a":"nodejs-best-practices advocates layered architecture to keep concerns separated as complexity grows. Typical layers include routes/controllers (HTTP handling), services (business logic), data access (database queries), and utilities. This structure makes testing easier, lets teams work in parallel, and simplifies refactoring. The skill helps you decide which layers your project needs and how to enforce boundaries\u2014avoiding the common anti-pattern of mixing HTTP logic with business rules.","q":"How should I structure a growing Node.js application?"},{"a":"nodejs-best-practices teaches you to treat error handling and validation as architectural concerns, not scattered logic. Centralized validation at API boundaries (using libraries like Zod or Joi) prevents invalid data from reaching your business logic. Error handling middleware catches exceptions, logs them consistently, and returns appropriate HTTP responses. The skill shows how this strategy reduces bugs, improves observability, and makes your codebase predictable for new team members.","q":"How do I implement centralized error handling and validation?"},{"a":"nodejs-best-practices identifies common pitfalls: mixing async patterns without understanding the event loop, skipping input validation, hardcoding secrets, treating error handling as an afterthought, and building monolithic structures that resist testing. The skill emphasizes that anti-patterns often emerge from context-unaware decisions\u2014using the wrong framework, ignoring security at design time, or deferring architecture until the codebase is unmaintainable. Awareness of these traps helps you make principled choices upfront.","q":"What Node.js anti-patterns should I avoid?"}],"shadow_tags":["decision-framework","architectural-patterns","runtime-selection","async-concurrency","api-validation","security-mindset","framework-comparison","error-strategy","performance-tradeoffs","testing-strategy"],"summary_rewrite":"This skill guides you through principled decisions for Node.js development\u2014from picking the right framework (Express, Fastify, NestJS, Hono) based on your deployment target and performance needs, to structuring layered architectures and handling errors consistently. It covers async patterns, validation strategies, security fundamentals, and testing priorities, emphasizing context-aware choices over one-size-fits-all solutions."},"files":[{"bytes":8651,"path":".agents/skills/nodejs-best-practices/SKILL.md","sha256":"da0e84eb6dd2f9784860209ce451725d32a5743a685084bd077d69503aa7e706","url":"https://skillfed.io/files/vudovn/ag-kit/nodejs-best-practices/c5a7ee78/SKILL.md"}],"id":"vudovn/ag-kit/nodejs-best-practices","links":{"html":"https://skillfed.io/vudovn/ag-kit/nodejs-best-practices","md":"https://skillfed.io/vudovn/ag-kit/nodejs-best-practices.md","repo":"https://github.com/vudovn/ag-kit"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":1512,"language":"TypeScript","last_updated":"2026-07-26","license":"MIT","name":"nodejs-best-practices","publisher":"vudovn","stars":8011},"relations":{"categories":["nodejs","backend-development","software-architecture"],"similar":[{"id":"itzzritik/OrderWorder/nodejs-best-practices"},{"id":"vercel/workflow/workflow-init"},{"id":"vudovn/ag-kit/api-patterns"},{"id":"HugoRCD/evlog/create-framework-integration"},{"id":"vasilyu1983/AI-Agents-public/software-backend"},{"id":"vudovn/ag-kit/architecture"},{"id":"vudovn/ag-kit/web-games"},{"id":"activepieces/activepieces/review-logging-patterns"},{"id":"HugoRCD/evlog/review-logging-patterns"},{"id":"vudovn/ag-kit/templates"}]},"slug":{"owner":"vudovn","repo":"ag-kit","skill":"nodejs-best-practices"},"version":"c5a7ee78"}
