design-system
Scannednpx machina-cli add skill 686f6c61/alfred-dev/design-system --openclawDiseñar arquitectura del sistema
Resumen
Este skill produce el diseño arquitectónico de un sistema o módulo, incluyendo diagramas de componentes, contratos entre módulos y decisiones de diseño fundamentales. El resultado es un documento que permite a cualquier desarrollador del equipo entender cómo encajan las piezas antes de escribir código.
La arquitectura no se diseña para impresionar, sino para comunicar. Los diagramas deben ser claros, los contratos precisos y las decisiones justificadas.
Proceso
-
Entender los requisitos. Leer el PRD si existe. Identificar los requisitos funcionales (qué hace el sistema) y los no funcionales (rendimiento, escalabilidad, seguridad, disponibilidad). Los requisitos no funcionales suelen ser los que más condicionan la arquitectura.
-
Definir los componentes principales. Identificar los módulos, servicios o capas del sistema. Para cada componente, documentar:
- Responsabilidad principal (una sola, siguiendo SRP).
- Inputs que recibe.
- Outputs que produce.
- Dependencias externas.
-
Generar diagrama de componentes con Mermaid:
graph TD A[Cliente] --> B[API Gateway] B --> C[Servicio Auth] B --> D[Servicio Core] D --> E[(Base de datos)] D --> F[Cola de mensajes]El diagrama debe mostrar los componentes y sus relaciones, no los detalles internos de cada uno.
-
Generar diagrama de secuencia para los flujos críticos:
sequenceDiagram participant U as Usuario participant A as API participant D as DB U->>A: POST /recurso A->>D: INSERT D-->>A: OK A-->>U: 201 CreatedCubrir al menos el happy path y el principal flujo de error.
-
Definir contratos entre módulos. Para cada interfaz entre componentes, especificar:
- Formato de datos (tipos, esquemas).
- Protocolo de comunicación (HTTP, gRPC, eventos, etc.).
- Manejo de errores (códigos, reintentos, fallbacks).
- Versionado del contrato.
-
Aplicar principios SOLID. Verificar que el diseño respeta:
- Single Responsibility: cada componente tiene una razón para cambiar.
- Open/Closed: extensible sin modificar lo existente.
- Liskov Substitution: las implementaciones son intercambiables.
- Interface Segregation: interfaces pequeñas y específicas.
- Dependency Inversion: depender de abstracciones, no de implementaciones concretas.
-
Documentar decisiones no obvias. Si se elige un patrón (Event Sourcing, CQRS, Hexagonal, etc.), explicar por qué es adecuado para este caso y qué alternativas se descartaron.
-
Revisar con el usuario. La arquitectura es una decisión de equipo. Presentar el diseño, recoger feedback e iterar antes de implementar.
Criterios de éxito
- El diseño incluye al menos un diagrama de componentes y un diagrama de secuencia en Mermaid.
- Cada componente tiene su responsabilidad documentada.
- Los contratos entre módulos están definidos con tipos y manejo de errores.
- Las decisiones de diseño están justificadas, no son arbitrarias.
- El usuario ha validado la arquitectura propuesta.
Source
git clone https://github.com/686f6c61/alfred-dev/blob/main/skills/arquitectura/design-system/SKILL.mdView on GitHub Overview
Este skill genera el diseño arquitectónico de un sistema o módulo, incluyendo diagramas de componentes, contratos entre módulos y decisiones de diseño fundamentales. El resultado es un documento claro que permite a cualquier desarrollador entender cómo encajan las piezas antes de escribir código.
How This Skill Works
El proceso comienza leyendo requisitos y conectando con qué necesita hacer el sistema. Luego se definen componentes, se documenta su responsabilidad, entradas y salidas, y se generan diagramas de componentes y secuencia con Mermaid. Después se especifican contratos entre módulos (datos, protocolo, manejo de errores y versionado) y se aplican principios SOLID, documentando decisiones no obvias y revisando el diseño con el usuario antes de implementar.
When to Use It
- Al iniciar una nueva arquitectura de sistema a partir de requisitos funcionales y no funcionales.
- Cuando necesitas diagramas claros para comunicar el diseño a todo el equipo de desarrollo.
- Antes de escribir código para definir contratos entre módulos y responsabilidades claras.
- Al evaluar patrones de diseño como Event Sourcing, CQRS o Arquitectura Hexagonal y justificar su uso.
- Cuando quieres obtener feedback del usuario y iterar el diseño de arquitectura.
Quick Start
- Step 1: Entiende los requisitos y identifica componentes principales con sus responsabilidades.
- Step 2: Genera diagramas de componentes y de secuencia en Mermaid; define contratos entre módulos (datos, protocolo, errores, versionado).
- Step 3: Aplica SOLID, documenta decisiones y revisa con el usuario para iterar.
Best Practices
- Asegurar que cada componente tenga una única responsabilidad (SRP).
- Mantener diagramas simples, centrados en la interacción entre componentes, no en detalles internos.
- Definir contratos entre módulos con formatos de datos, protocolos y manejo de errores, con versionado claro.
- Aplicar principios SOLID para garantizar extensibilidad y mantenibilidad.
- Documentar decisiones no obvias y justificar cada elección; revisar con el usuario antes de implementar.
Example Use Cases
- Diagrama de componentes donde Cliente se comunica con API Gateway, que orquesta Auth y Core, con Base de Datos y Cola de mensajes.
- Diagrama de secuencia de un flujo crítico: usuario envía POST, servicio autenticación valida, Core persiste y devuelve OK/201.
- Contrato entre API Gateway y Servicio Auth: esquema de payloads, códigos de error y reintentos.
- Elección de patrón Hexagonal o CQRS para separar lectores/escritores y facilitar pruebas, con justificación.
- Revisión de diseño con el usuario para iterar en requisitos y contratos antes de la implementación.