# Ddd Validate > Valida los límites de dominio: detecta imports que cruzan bounded contexts y problemas de invariantes en los aggregates. Para auditar un codebase DDD o como gate de CI. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/ddd-validate Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/ddd-validate.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: el mes pasado Coste de contexto: 64 tok instalada, 643 tok al activarse, 643 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: bash read grep glob mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search 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-validate --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill ddd-validate --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill ddd-validate --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill ddd-validate --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill ddd-validate --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill ddd-validate --agent cline ``` ## Qué hace - Escanea los bounded contexts bajo `src/*/domain/` y detecta imports que acceden directamente al domain de otro contexto. - Revisa los aggregate roots en busca de setters públicos que evitan la validación de invariantes. - Verifica que los eventos de dominio usen nombre en pasado, sean inmutables y lleven el ID del aggregate. - Comprueba que las interfaces de repositorio vivan en domain/repositories/ y sus implementaciones en infrastructure/. - Genera una tabla de violaciones categorizadas como BOUNDARY, INVARIANT, EVENT o REPOSITORY. ## Cuándo usarla - Al auditar un codebase DDD en busca de fugas entre bounded contexts. - Antes de fusionar cambios que afectan a varios contextos. - Como gate de CI para detectar erosión de límites de forma temprana. ## Qué la activa - "Valida los límites de dominio del proyecto" - "Revisa si hay violaciones entre bounded contexts" ## Antes de instalar - Necesita en el PATH: sed ## 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. Validate domain boundary integrity across all bounded contexts. ## Steps 1. **Discover contexts**: Scan `src/*/domain/` to find all bounded contexts. 2. **Check cross-boundary violations**: - For each context, scan all `.ts` files for import statements - Flag any import that reaches into another context's `domain/` directory directly - Allowed: importing from another context's public `index.ts` (application layer) - Violation: importing from `src//domain/entities/...` directly ```bash # Find cross-boundary imports for ctx in $(find src -maxdepth 2 -name "domain" -type d | sed 's|src/||;s|/domain||'); do grep -rn "from ['\"].*src/" "src/$ctx/" --include="*.ts" | grep -v "src/$ctx/" || true done ``` 3. **Check aggregate invariant enforcement**: - Scan aggregate root entities for public setters that bypass validation - Flag mutable public properties without invariant checks - Verify that child entities are not directly accessible (must go through aggregate root) 4. **Check event naming conventions**: - Domain events should be past-tense named (e.g., `OrderCreated`, not `CreateOrder`) - Events should be immutable (no public setters) - Events should carry the aggregate ID 5. **Check repository patterns**: - Repository interfaces should exist in `domain/repositories/`, not `infrastructure/` - Repository implementations should exist in `infrastructure/`, not `domain/` - Each aggregate root should have exactly one repository 6. **Report findings**: - Output a table of violations with file path, line number, violation type, and suggestion - Categorize as: `BOUNDARY`, `INVARIANT`, `EVENT`, `REPOSITORY` - Exit with summary: total violations, by category, severity 7. **Store results**: ```bash npx @claude-flow/cli@latest memory store --key "ddd-validation-TIMESTAMP" --value "RESULTS_SUMMARY" --namespace tasks npx @claude-flow/cli@latest hooks post-task --task-id "ddd-validate" --success true --store-results true ``` ## Dónde encaja - Categoría: [Testing y QA](https://skillsagentes.com/categorias/testing-qa.md) — Flujos de testing unitario, de integración y end-to-end. - 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)