← ClaudeAtlas

solid-principleslisted

SOLID principles adapted for functional and TypeScript-first development.
aiskillstore/marketplace · ★ 329 · DevOps & Infrastructure · score 79
Install: claude install-skill aiskillstore/marketplace
# SOLID Principles for Node.js/TypeScript ## Overview SOLID principles adapted for functional and TypeScript-first development. ## S - Single Responsibility Principle A module/function should have only one reason to change. ### Violation ```typescript // Bad: Does validation, processing, and notification const processOrder = async (order: Order) => { // Validation if (!order.items.length) throw new Error('Empty order'); if (order.total < 0) throw new Error('Invalid total'); // Processing const processed = { ...order, status: 'processed' }; await db.orders.save(processed); // Notification await emailService.send(order.userId, 'Order confirmed'); return processed; }; ``` ### Correct ```typescript // Good: Separate responsibilities const validateOrder = (order: Order): Result<Order, ValidationError> => { if (!order.items.length) return Result.fail(emptyOrderError()); if (order.total < 0) return Result.fail(invalidTotalError()); return Result.ok(order); }; const saveOrder = (db: Database) => async (order: Order): Promise<Order> => { const processed = { ...order, status: 'processed' }; await db.orders.save(processed); return processed; }; const notifyUser = (notifier: Notifier) => async (userId: string, message: string): Promise<void> => { await notifier.send(userId, message); }; // Compose in orchestrator const processOrder = async (order: Order) => { const validation = validateOrder(order); if (validation.isFailure)