# Ddd Aggregate > Genera el scaffolding de un aggregate root: entidad, value objects, interfaz de repositorio, eventos de dominio y stubs de test, dentro de un bounded context existente. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/ddd-aggregate Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/ddd-aggregate.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: el mes pasado Coste de contexto: 74 tok instalada, 774 tok al activarse, 774 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: bash read write edit grep glob mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store mcp__plugin_ruflo-core_ruflo__hooks_pre-task mcp__plugin_ruflo-core_ruflo__hooks_post-task ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill ddd-aggregate --agent cline ``` ## Qué hace - Crea la entidad raíz del aggregate en `.entity.ts` con validación de invariantes y `equals()` por identidad. - Genera value objects, incluida una ID inmutable con factory method. - Crea la interfaz de repositorio (`findById`, `save`, `delete`) sin implementación. - Genera eventos de dominio en pasado y stubs de test unitario para la entidad. - Actualiza los barrel exports y guarda el aggregate en el grafo del modelo de dominio. ## Cuándo usarla - Al añadir un nuevo aggregate a un bounded context ya existente. - Al modelar un concepto de negocio nuevo que debe imponer sus propios invariantes. - Para generar el boilerplate de la tripleta entidad + repositorio + eventos. ## Cuándo no - Si el bounded context indicado aún no existe bajo `src/` (crea antes el contexto). ## Qué la activa - "Crea un aggregate root para el contexto orders" - "Genera el aggregate Payment en el contexto billing" ## Antes de instalar - El bounded context de destino debe existir ya bajo `src//domain/`. ## Archivos - SKILL.md — 3 KB ## SKILL.md Reproducido tal cual desde ruvnet/ruflo bajo MIT. Esta sección es el documento original y está en inglés. Scaffold a complete aggregate root inside a bounded context. Parse `$ARGUMENTS` as ` ` (both kebab-case). The context must already exist under `src/`. ## Steps 1. **Validate**: Confirm `src//domain/` exists. If not, suggest running `/ddd-context ` first. 2. **Pre-task hook**: `npx @claude-flow/cli@latest hooks pre-task --description "DDD aggregate: in "` 3. **Create aggregate root entity**: - File: `src//domain/entities/.entity.ts` - Include: unique ID field, constructor with invariant validation, domain methods that enforce business rules, `equals()` based on identity - Export a TypeScript class extending or implementing a base `AggregateRoot` interface 4. **Create value objects**: - File: `src//domain/value-objects/-id.value-object.ts` - Include: immutable ID value object with factory method and validation - Add additional value objects as properties of the aggregate suggest them 5. **Create repository interface**: - File: `src//domain/repositories/.repository.ts` - Include: `findById`, `save`, `delete` methods - Use the aggregate root and its ID value object as types - This is an interface only -- no implementation (infrastructure concern) 6. **Create domain events**: - File: `src//domain/events/-created.event.ts` - File: `src//domain/events/-updated.event.ts` - Include: event name (past tense), timestamp, aggregate ID, payload 7. **Create unit test stubs**: - File: `src//domain/entities/.entity.test.ts` - Include: test cases for construction invariants, domain methods, equality - Use `describe`/`it` with `should [behavior] when [condition]` names 8. **Update barrel exports**: Add new files to the relevant `index.ts` barrel files. 9. **Store in domain model graph**: ``` mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-store --parent "context:" --child "aggregate:" --relation "contains" mcp__plugin_ruflo-core_ruflo__memory_store --key "ddd-aggregate--" --value "AGGREGATE_SUMMARY" --namespace tasks ``` 10. **Post-task hook**: `npx @claude-flow/cli@latest hooks post-task --task-id "ddd-aggregate-" --success true --train-neural true` ## Dónde encaja - Categoría: [Herramientas para desarrolladores](https://skillsagentes.com/categorias/herramientas-desarrollo.md) — Skills que cambian cómo tu agente escribe, revisa y despliega código. - Creador: [ruvnet](https://skillsagentes.com/creators/ruvnet.md) — 275 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Harness Gepa](https://skillsagentes.com/skills/ruvnet/ruflo/harness-gepa.md): Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución. - [Deepseek Reason](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-reason.md): Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde. - [Deepseek Chat](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-chat.md): Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento. - [Adr Index](https://skillsagentes.com/skills/ruvnet/ruflo/adr-index.md): Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP. - [Agntcy Status](https://skillsagentes.com/skills/ruvnet/ruflo/agntcy-status.md): Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)