software-architecture
专注质量的软件架构指南。此技能适用于用户编写代码、设计架构、分析代码等所有与软件开发相关的场景。
name:software-architecturedescription:Guide for quality focused software architecture. This skill should be used when users want to write code, design architecture, analyze code, in any case that relates to software development.
Software Architecture Development Skill
This skill provides guidance for quality focused software development and architecture. It is based on Clean Architecture and Domain Driven Design principles.
Code Style Rules
General Principles
Best Practices
Library-First Approach
- Check npm for existing libraries that solve the problem
- Evaluate existing services/SaaS solutions
- Consider third-party APIs for common functionality
cockatiel instead of writing your own retry logic.- Specific business logic unique to the domain
- Performance-critical paths with special requirements
- When external dependencies would be overkill
- Security-sensitive code requiring full control
- When existing solutions don't meet requirements after thorough evaluation
Architecture and Design
- Follow domain-driven design and ubiquitous language
- Separate domain entities from infrastructure concerns
- Keep business logic independent of frameworks
- Define use cases clearly and keep them isolated
- AVOID generic names:
utils, helpers, common, shared- USE domain-specific names:
OrderCalculator, UserAuthenticator, InvoiceGenerator- Follow bounded context naming patterns
- Each module should have a single, clear purpose
- Do NOT mix business logic with UI components
- Keep database queries out of controllers
- Maintain clear boundaries between contexts
- Ensure proper separation of responsibilities
Anti-Patterns to Avoid
- Don't build custom auth when Auth0/Supabase exists
- Don't write custom state management instead of using Redux/Zustand
- Don't create custom form validation instead of using established libraries
- Mixing business logic with UI components
- Database queries directly in controllers
- Lack of clear separation of concerns
-
utils.js with 50 unrelated functions-
helpers/misc.js as a dumping ground-
common/shared.js with unclear purpose