# Estructura del proyecto

> Cada carpeta y archivo que BMAD+ crea en un proyecto y en tu máquina, qué comando lo crea y si es tuyo para editar, gestionado por BMAD+ o un estado que conviene no tocar.

Canonical: https://bmad-plus.rochetta.fr/es/docs/reference/project-layout/
Language: es
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentación de BMAD+ › [Referencia](https://bmad-plus.rochetta.fr/es/docs/reference/) › Estructura del proyecto

BMAD+ escribe en unos pocos lugares bien nombrados y en ningún otro. Saber cuál es cuál responde a las tres preguntas prácticas: qué puedo editar, qué debo versionar y qué se quita si desinstalo. Esta página los mapea todos.

<a id="map"></a>
## El mapa

**Un proyecto con varios packs tras algo de uso (las carpetas aparecen cuando se ejecutan los comandos que las crean)**

```text
your-project/
├── AGENTS.md                      common spine for every assistant
├── CLAUDE.md, GEMINI.md, ...      one adapter per selected tool
├── .agents/
│   ├── skills/                    agents, packs and skills (agent-*, pack-*, bmad-plus-*, ...)
│   ├── data/role-triggers.yaml    auto-activation rules
│   └── memory/                    project memory (Memory pack)
├── _bmad/
│   ├── config.yaml                your settings
│   ├── module.yaml, module-help.csv
│   ├── .bmad-plus-install.json    install manifest (ownership hashes)
│   └── update-policy.json         only after update-policy
├── _bmad-output/                  deliverables written by agents and commands
│   ├── discovery/  build/         created by install
│   └── uat/  review/  assurance/  design/  dev-studio/  osint-reports/  ready-to-integrate/
├── .bmad/                         local state: caches, locks, receipts, journals, Python environments
├── .bmad-plus/                    durable run state: swarm/ and nexus/
├── docs/                          created empty by install
└── backups/                       only with the Backup pack
```

<a id="who-owns-what"></a>
## De quién es cada cosa

La propiedad se registra, no se adivina. Al instalar, BMAD+ guarda una huella de contenido de cada archivo que copia bajo `.agents/` y de `_bmad/module.yaml` y `_bmad/module-help.csv`: esa lista es el inventario de archivos del manifiesto. Un archivo cuya huella sigue coincidiendo es de BMAD+: `update` lo actualiza y `uninstall` lo quita. Un archivo que cambiaste, o que BMAD+ nunca entregó, es tuyo: `update` lo conserva e informa de un conflicto, y `uninstall` lo mantiene. Tus ajustes, tu memoria y los entregables de `_bmad-output/` nunca están en el inventario.

**Cada ubicación, quién la crea y si la editas**

| Ruta | Creado por | ¿Es tuyo para editar? | Notas |
| --- | --- | --- | --- |
| `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `CONVENTIONS.md`, `.cursor/rules/bmad-plus.mdc`, `.codex/AGENTS.md`, `.opencode/AGENTS.md` | `install`, actualizados por `update` | No por diseño | Generados desde el registro. Si editas uno, BMAD+ conserva tu versión y deja de actualizarlo. Ver la página de adaptadores. |
| `.agents/skills/` | `install`, `update` | No: es de BMAD+ | Una carpeta por agente (`agent-*`), por pack (`pack-<name>`) y por habilidad (`bmad-plus-*`, `dev-studio`, `design`, ...). Los archivos editados se conservan como conflictos. |
| `.agents/data/role-triggers.yaml` | `install`, `update` | No: es de BMAD+ | Las reglas de activación automática de roles de agentes. |
| `.agents/memory/` | `install` con el pack Memory; los agentes escriben en ella | Sí | `decisions.md`, `lessons.md`, `patterns.md`, `context.md`, una carpeta `sessions/` y un puntero `.brain-link` al cerebro en uso. Los archivos existentes nunca se sobrescriben y `uninstall` conserva la carpeta. |
| `_bmad/config.yaml` | `install` | Sí | Tus ajustes; ver la página de configuración. Lo conserva `uninstall`. |
| `_bmad/module.yaml`, `_bmad/module-help.csv` | `install`, `update` | No: es de BMAD+ | Descripción del módulo e índice de ayuda, seguidos en el inventario. |
| `_bmad/.bmad-plus-install.json` | `install`, `update` | Nunca a mano | El manifiesto: versión, packs, herramientas, idioma, modo de ejecución, huellas de los adaptadores e inventario de archivos. Si no se puede leer, `install` lo copia a `.bmad-plus-install.json.corrupt.bak` antes de repararlo. |
| `_bmad/update-policy.json` | `update-policy` (cuando guardas una política) | Mediante el comando | Si falta, rige la política por defecto: notify. Un archivo inválido hace que los comandos de actualización se nieguen a ejecutarse. |
| `_bmad/review-rules.yaml`, `_bmad/assurance/`, `_bmad/ai-processing-register.yaml` | Tú, o `assurance init` y `ai-register init` | Sí | Las reglas de revisión propias de tu proyecto, los casos de aseguramiento y el registro de integraciones de IA. Ninguno existe hasta que lo creas. |
| `_bmad-output/discovery/`, `_bmad-output/build/` | `install` (vacías) | Sí | Donde van el brief de producto, el PRD, la arquitectura y las historias. Nunca están en el inventario, así que nunca se quitan. |
| `_bmad-output/uat/` | comandos `uat`, agentes | Specs y triaje: sí. Páginas: regenerar | `specs/`, `pages/`, `results/`, `triage/`, `checks/` y `ORDER.md`. Los resultados los producen quienes prueban; no los edites. |
| `_bmad-output/review/<id>/` | comandos `review` | No: evidencias | `scope.json`, `checklist.md`, `findings.json`, `findings.anchored.json`, `coverage.json`, `continue.json`, `compare.json` de una revisión. |
| `_bmad-output/assurance/` | comandos `assurance` | No: evidencias | El registro encadenado por huellas (`runs.jsonl`) de un caso de aseguramiento. |
| `_bmad-output/design/`, `_bmad-output/dev-studio/`, `_bmad-output/osint-reports/`, `_bmad-output/ready-to-integrate/` | Atelier e `intake`, Dev Studio, Shadow, Maker | Sí | Briefs y revisiones de diseño, informes de Dev Studio (`<workflow-id>.md`), dosieres OSINT y agentes empaquetados. Un brief escrito por `intake render` lleva una línea de propiedad y lo reescribe el comando: edita las respuestas, no el brief. |
| `.bmad/update-check.json` | `update-check` | Nunca a mano | Una caché de 24 horas de la última respuesta del registro, con una espera antes de reintentar tras un fallo. Se puede borrar sin riesgo: se reconstruye. |
| `.bmad/update.lock` | `install`, `update` (mientras se ejecutan) | Solo si está obsoleto | Evita dos instalaciones o actualizaciones a la vez. `doctor` avisa cuando está obsoleto (propietario desaparecido, o más de 60 minutos) y el mensaje nombra el archivo que borrar. |
| `.bmad/updates/<receipt-id>/` | `update` | Nunca a mano | `receipt.json` y `backups/` de una actualización. Es lo que lee `update --restore <receipt-id>`: consérvalos mientras puedas querer volver atrás. |
| `.bmad/venv/<pack>/` | `install --provision-python` | Nunca a mano | El entorno Python aislado de un pack que lo necesita (SEO). |
| `.bmad/memory/` | comandos `mem` | Nunca a mano | `journal.ndjson`, `pattern-scores.json` y los registros de promociones y resultados: el diario de memoria. |
| `.bmad-plus/swarm/runs/<run-id>/`, `.bmad-plus/swarm/reports/` | comandos `swarm` | Nunca a mano | Una carpeta por ejecución de enjambre (definición, fichas, briefs, respuestas, recuento). El comando solo escribe bajo este árbol. Añade respuestas con `swarm save`. |
| `.bmad-plus/nexus/runs/` | comandos `nexus` | Nunca a mano | El estado de referencia de las ejecuciones de tareas duraderas. Un `.bmad-plus/orchestrator-state.yaml` puede estar al lado, solo como resumen de navegación. |
| `backups/` | Backup Manager (pack Backup) | Sí | Archivos ZIP con marca de tiempo del proyecto. El pack Backup excluye esta carpeta de sus propios archivos. |
| `~/.bmad-plus/brain/` | `install` con el pack Memory (si no se halla otro cerebro), `scan` | Sí | Fuera del proyecto, en tu carpeta personal: el cerebro global compartido por todos tus proyectos. `uninstall` nunca lo toca. |

<a id="git"></a>
## Qué versionar

`install` no edita `.gitignore`: lo que no ignores aparecerá en `git status`. La decisión es tuya; la tabla de arriba da los hechos para decidir. En la ejecución de aceptación registrada, el proyecto de demostración ya ignoraba las rutas instaladas, y `git status --short` siguió vacío tras la instalación.

- Conviene compartir con el equipo: `_bmad/config.yaml` (comportamiento común), `.agents/memory/` (decisiones y lecciones comunes), los entregables de `_bmad-output/` y `_bmad/update-policy.json` si la política es una regla del equipo.
- Reproducibles desde el paquete, así que un equipo puede preferir ignorarlos: `.agents/skills/`, `.agents/data/`, los archivos de adaptadores generados. Quien clone el proyecto ejecuta entonces `install` una vez.
- Estado local sin sentido en otra máquina: `.bmad/` y `.bmad-plus/`.

> **Nota · Esto es una sugerencia** Esta división sigue cómo se produce y se usa cada ubicación; BMAD+ no impone ninguna política de control de versiones.

<a id="uninstall"></a>
## Qué quita y qué conserva uninstall

**Efecto de uninstall**

| Quitado | Conservado |
| --- | --- |
| Archivos idénticos byte a byte a lo que BMAD+ entrega bajo `.agents/skills/` y `.agents/data/`, incluidas las habilidades copiadas del paquete Design | `.agents/memory/`, `_bmad/config.yaml`, `_bmad-output/`, cualquier archivo editado, cualquier archivo que BMAD+ no entregó |
| Los archivos del módulo, el manifiesto de instalación y los adaptadores que aún llevan el marcador de instalación y una huella coincidente (`AGENTS.md`, `CLAUDE.md`, ...) | `.bmad/`, `.bmad-plus/` (estado de ejecuciones y recibos) y `~/.bmad-plus/brain` |
| Las carpetas que quedan vacías se eliminan; nada se borra de forma recursiva | Todo lo que esté bajo un enlace simbólico o una unión: uninstall se niega a tocar rutas enlazadas |

**Uninstall en la práctica**

```text
$ npx bmad-plus uninstall --yes --directory .\demo-app
T   BMAD+ Uninstaller
•  BMAD+ v0.23.0 (installé le 2026-10-18)
•  Packs sélectionnés: core, design
—  La mémoire, les réglages et les fichiers inconnus ou modifiés ont été conservés.
# La línea con el número de elementos quitados se omite a propósito: la primera ejecución registrada, que reveló un fallo que dejaba las habilidades Design en su sitio, mostraba una cifra que ya no vale tras la corrección.
```

Salida capturada de una ejecución real. Fuente: Capturado durante dos recetas de aceptación de la 0.23.0, el 2026-10-18 (líneas de cabecera y luego lo esperado del paso 7); el instalador se ejecutó en francés

<a id="examples"></a>
## Ejemplo

<a id="example-cli-layout-clean-up-safely"></a>
### Limpiar el estado local sin perder nada importante

La carpeta del proyecto está recargada tras meses de actualizaciones y ejecuciones de enjambre, y quieres saber qué se puede borrar sin riesgo.

**En tu asistente de IA**

```text
Lista lo que hay bajo .bmad y .bmad-plus en este proyecto, di qué es cada elemento e indica cuáles puedo borrar sin perder la memoria del proyecto, los ajustes ni la posibilidad de restaurar una actualización.
```

**Lo que deberías obtener** Una respuesta fiel separa tres grupos. `update-check.json` es una caché y se reconstruye en la próxima comprobación. `updates/<receipt-id>/` guarda las copias que `update --restore` necesita, así que borra solo recibos a los que nunca volverás. `update.lock` solo se borra si `doctor` lo declara obsoleto. `.bmad/memory/` contiene el diario de eventos y los resultados que leen `mem recall` y `mem observe`, y `swarm/runs/` y `nexus/runs/` son la evidencia de ejecuciones pasadas: bórralos solo si ya no necesitas ese historial ni esa evidencia. La memoria del proyecto en Markdown vive en `.agents/memory/` y los ajustes en `_bmad/config.yaml`, que nada de esto toca.

**Véase también**

- [El archivo de configuración](https://bmad-plus.rochetta.fr/es/docs/reference/config-yaml/)
- [Adaptadores](https://bmad-plus.rochetta.fr/es/docs/reference/adapters/)
- [Instalar, actualizar, desinstalar](https://bmad-plus.rochetta.fr/es/docs/guides/install-lifecycle/)
- [uninstall](https://bmad-plus.rochetta.fr/es/docs/reference/cli-uninstall/)
- [doctor](https://bmad-plus.rochetta.fr/es/docs/reference/cli-doctor/)

[Documentación de BMAD+](https://bmad-plus.rochetta.fr/es/docs/) · [Referencia](https://bmad-plus.rochetta.fr/es/docs/reference/)

[Código en GitHub](https://github.com/lrochetta/BMAD-PLUS)
