Modelado de la Aplicación (Application Modeling)
Antes de empezar a programar, es imperativo modelar la aplicación para separar la *complejidad incidental* (la del problema real, que es inevitable) de la *complejidad accidental* (la que nos causamos nosotros mismos por una mala implementación).
Regla de Oro: Siempre documenta la estructura de alto nivel y los flujos de la aplicación en formato texto antes de codificar. No saltes directo al código.
Tu tarea al usar esta skill
Cuando el usuario pida modelar una aplicación o si comienzas una funcionalidad desde cero, debes guiar al usuario para crear o actualizar un archivo flows.md en la raíz del proyecto (o la carpeta docs).
El archivo flows.md DEBE contener estas secciones obligatorias:
1. Diagramas de Arquitectura (C4 - Contenedores)
Utiliza este diagrama para definir la infraestructura lógica y los límites del sistema. Es el paso previo obligatorio antes de definir el ERD, ya que establece qué servicios existen y cómo se comunican.
Formato a usar (Mermaid):
graph TD
User((Usuario))
subgraph System_Boundary [Límite del Sistema]
Web[App Web: Frontend: HTML/CSS/JavaScript]
Server[Backend: Node.js/Python/Go]
DB[(Persistencia: SQL/NoSQL)]
end
External[Servicios Externos: Auth/Storage]
User -->|Navega/Interactúa| Web
Web -->|Llamadas API| Server
Server -->|Lectura/Escritura| DB
Web -.->|Token/Assets| External3. Diagramas de Entidad-Relación (ERD)
Documenta el modelo de datos y las relaciones entre entidades. Piensa en qué datos almacena la aplicación, las llaves primarias y foráneas.
Formato a usar (Mermaid):
erDiagram
Nombre_Entidad {
string id PK
tipo campo "opcional / unico"
}
%% Relaciones (1:n)
Entidad_A ||--o{ Entidad_B : "tiene muchos"2. Diagramas de Secuencia y API
Documenta el flujo de interacciones y define explícitamente los endpoints o métodos de comunicación.
Formato a usar (Mermaid):
sequenceDiagram
participant Interfaz
participant API as API (POST /api/ejemplo)
participant DB
Interfaz->>API: accionUsuario(datos_json)
API->>DB: guardarX(datos)
DB-->>API: respuesta exitosa
API-->>Interfaz: 201 Created / Mostrar éxito4. Diagramas de Estado y UI
Documenta los estados de la aplicación y qué pasa en cada uno.
Formato a usar:
## Nombre del Estado (clave_estado)
- **UI (Lo que ve el usuario):** Pantalla de carga o formulario específico.
- **Datos:** Estado actual del objeto (ej: "pendiente", "aprobado").
- **Background:** Tareas asíncronas o llamadas a API.Flujo de Estados (Mermaid):
stateDiagram-v2
[*] --> Estado_Inicial
Estado_Inicial --> Estado_Cargando : accion(usuario_clica)
Estado_Cargando --> Resultados : API(exitosa)Reglas de Implementación de esta Skill
- Renderización Inmediata en Artifact: Al proponer o actualizar el archivo
flows.md, debes presentar SIEMPRE los diagramas usando un Artifact en formato Markdown (ej. un archivo en tu sistema de guardadoflujos_visuales.md). De esta forma, el código de los bloquesmermaidse compilará gráficamente de forma automática en la ventana especial de lectura y el usuario podrá iterar y validarlos visualmente de una vez. - Validación de Sintaxis: Antes de presentar un diagrama Mermaid, verifica que no contenga caracteres prohibidos en los nombres de nodos y que la indentación sea correcta.
- Contratos de API: En la sección de secuencia, sé específico con los verbos HTTP (GET, POST, etc.) y los códigos de respuesta (200, 404, 500).
- No Código sin Plan: Rechaza amablemente la generación de código backend o frontend hasta que el
flows.mdesté aprobado por el usuario. - Comandos Rápidos (!model,!flows, "ver modelo"): Si el usuario escribe alguno de estos comandos:
- Verifica si ya existe el archivo flows.md en el proyecto actual. - Si EXISTE: Lee el archivo y crea inmediatamente el Artifact para visualizar gráficamente el contenido, sin modificar nada. - Si NO EXISTE: Revisa y analiza los archivos del proyecto actual (sus clases, modelos de base de datos, APIs, etc.) para inferir cómo funciona la aplicación. Luego, redacta un flows.md inicial apoyado en este análisis y finaliza generando el Artifact visual para que el usuario pueda iterarlo.
Flujo de trabajo
- Entrevista/Investigación: Analiza los requerimientos y pregunta por entidades clave.
- Creación de
flows.md: Crea el archivo con los diagramas visuales. - Revisión Iterativa: Ajusta el modelo según el feedback visual del usuario.
- Implementación: Usa el
flows.mdcomo fuente de verdad absoluta para el código.