# Tutorial: de una idea a un enjambre

> Recorrido completo con salida real: instalar, Atelier pregunta primero, brief, panel simulado con presupuesto, recuento honesto y desinstalación conservando la memoria.

Canonical: https://bmad-plus.rochetta.fr/es/docs/guides/idea-to-swarm/
Language: es
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentación de BMAD+ › [Guías](https://bmad-plus.rochetta.fr/es/docs/guides/) › Tutorial: de una idea a un enjambre

Este tutorial sigue una pequeña idea desde la primera pregunta hasta el último archivo. El escenario: una cafetería llamada Orbit quiere una landing page cuyo único trabajo es lograr que un visitante nuevo abra una tarjeta de fidelidad. Dejarás que Atelier (el agente de diseño) te entreviste antes de tocar nada, probarás el argumentario del local con un panel de compradores simulados, leerás el resultado sin engañarte y luego quitarás BMAD+ conservando la memoria de tu proyecto. Cada bloque de terminal de abajo es una salida real.

> **Nota · Qué es real y qué no** Los comandos y su salida son reales (BMAD+ 0.23.0, ejecutado en un servidor de pruebas en un proyecto desechable). No se ejecutó ningún modelo. Donde un subagente escribiría una respuesta, el tutorial escribe cinco a mano y lo dice; las citas del recuento son, pues, texto de demostración, no palabras de compradores. La cafetería es inventada, y su argumentario y su perfil son los fixtures de prueba del repositorio de BMAD+.

<a id="step-1-install"></a>
## Paso 1. Instalar core y design (y memory)

Core aporta los cuatro agentes y las habilidades de intake, enjambre y aceptación. Design aporta a Atelier y su intake. Se añade el pack Memory para que haya algo que conservar al final del tutorial. El pack Design toma sus tres habilidades del paquete `design-skill` en la instalación, así que este paso necesita acceso a los paquetes de los que depende BMAD+, como cualquier ejecución de `npx bmad-plus`.

**Instalación y diagnóstico**

```text
$ npx bmad-plus install --yes --lang en --packs core,design,memory --tools claude-code
◆  Selected packs: ⚙️ Core, 🧠 Memory, 🎨 Design
●  🧠 Global brain created: /work/demo/home/.bmad-plus/brain
◇  ✅ 6 agents, 9 skills, 5 files copied
◇  ✅ 1 IDE(s) configured
│    🎨 Design: "/design read" → Atelier interviews you, then builds
└  BMAD+ is ready! Talk to Atlas to get started 🚀
$ npm install --save-dev bmad-plus
# Una sola vez, para que los comandos `npx --no-install` de abajo encuentren una copia local (npm imprime su propio resumen, no reproducido aquí). Sin ella se detienen con «npx canceled due to missing packages and no YES option».
$ npx --no-install bmad-plus doctor
│  98/98 checks passed
│  0 error(s), 0 warning(s)
│  Ownership inventory: complete
# Extracto. El cerebro global se creó en una carpeta personal desechable porque no existía ninguno en esa máquina.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

<a id="step-2-ask-first"></a>
## Paso 2. Dejar que Atelier pregunte primero

En el chat de tu herramienta de IA, escribe `/design read`. Atelier no empieza a diseñar: ejecuta el intake del pack Design. Detrás de la conversación llama a `bmad-plus intake plan`, te hace el primer lote (seis preguntas como máximo, primero las tres imprescindibles) y luego registra tus respuestas. Respondes con tus palabras; la transcripción de abajo muestra los comandos que el asistente ejecuta por ti.

<a id="example-idea-ask-first"></a>
### Iniciar el design read

Úsalo con el pack Design instalado, en el chat de tu herramienta de IA.

**En tu asistente de IA**

```text
/design read para la página de inicio de Orbit, una cafetería. Responderé con mis palabras, unas pocas preguntas cada vez.
```

**Lo que deberías obtener** Atelier hace el primer lote de preguntas del intake `design-read`: de qué superficie se trata, quién la usa y en qué situación, y la única tarea que debe cumplir la página; luego recursos de marca, sistema de diseño y familia estética. Registra lo que dices como `answered` en `_bmad-output/design/intake.json` en cuanto respondes, propone valores por defecto cuando puede y espera. Todavía no se genera ningún brief ni se diseña nada.

**Lo que ejecuta el asistente mientras respondes**

```text
$ npx --no-install bmad-plus intake check .agents/skills/pack-design/intake.yaml
.agents/skills/pack-design/intake.yaml: valid intake design-read (design), 13 questions, 3 must-have.
$ npx --no-install bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json
design-read (design): not ready — 0 answered, 0 defaulted, 0 unknown, 13 not asked yet.
Must-haves still open: surface_kind, audience, job
# Código de salida 2. La lista «Ask next» (seis preguntas) sigue en la salida real.
$ npx --no-install bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=landing --set "audience=Urban professionals who buy coffee most days; on a phone, on the way to work, a few seconds of attention" --set "job=Get a first-time visitor to open a loyalty card; success is the sign-up button being tapped"
Recorded surface_kind, audience, job in _bmad-output/design/intake.json.
design-read (design): ready — 3 answered, 0 defaulted, 0 unknown, 10 not asked yet.
$ npx --no-install bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set brand_assets=partial --default design_system --default aesthetic_family --set motion=3 --set variance=UNKNOWN
Recorded brand_assets, motion, variance, design_system, aesthetic_family in _bmad-output/design/intake.json.
design-read (design): ready — 5 answered, 2 defaulted, 1 unknown, 5 not asked yet.
Unknown: variance
$ npx --no-install bmad-plus intake render --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --out _bmad-output/design/brief.md
Brief written to _bmad-output/design/brief.md (3043 bytes); the intake is ready.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

<a id="step-3-read-the-brief"></a>
## Paso 3. Leer el brief antes de construir nada

Abre `_bmad-output/design/brief.md`. Es el contrato para el resto del trabajo, así que comprueba tres cosas. Primero, que los tres imprescindibles dicen lo que querías decir. Segundo, que las respuestas marcadas «proposed default, not confirmed by the user» (aquí el sistema de diseño `none` y la familia estética `none`) son propuestas aceptables y no hechos que tú diste. Tercero, la lista «Open questions» del final: aquí `variance` es desconocida, y `density`, `stack`, `accessibility_target`, `languages` y `required_states` aún no se han preguntado. Atelier fija un ajuste abierto a partir de la superficie y anota que lo infirió; lee el stack del repositorio. Si te importa una respuesta que falta (los idiomas de la página, por ejemplo), dala ahora con otro `intake record`.

<a id="step-4-build"></a>
## Paso 4. Construir a partir del brief

Ahora pide la construcción. Atelier abre su habilidad `design`, cuyo primer paso queda satisfecho por el brief (no hace dos veces las mismas preguntas), y construye la landing page en el stack que leyó del repositorio. Según las reglas del pack Design, el entregable conserva el estado de cada respuesta donde se usó (un valor por defecto o una inferencia se señala), lleva los imprescindibles desconocidos con su riesgo en su primer párrafo y termina con la lista de comprobación de entrega de la habilidad, de modo que «listo» o «no listo» salga de la lista y no del aspecto de la página. Este tutorial no reproduce ese entregable: no es salida de la CLI y no se ejecutó ningún modelo.

<a id="example-idea-build-from-brief"></a>
### Construir la página a partir del brief registrado

Úsalo cuando el brief esté redactado y leído.

**En tu asistente de IA**

```text
/design build landing — usa _bmad-output/design/brief.md como brief y no me repitas sus preguntas. Enséñame los ajustes que inferiste y por qué, señala cada lugar donde se usó un valor por defecto propuesto o una inferencia, y termina con la lista de comprobación de entrega y su veredicto.
```

**Lo que deberías obtener** La página en tu stack, un breve relato de los ajustes inferidos, los valores por defecto señalados y las preguntas abiertas con sus riesgos, y el veredicto de la lista de comprobación citado al final. Las evidencias del informe se etiquetan `tool` (se ejecutó un comando y se cita su salida) o `inspection` (leído frente a la lista).

<a id="step-5-test-the-pitch"></a>
## Paso 5. Probar el argumentario con un panel

La página dice lo que ofrece el local; ¿cala la oferta? Un panel de compradores simulados lee el argumentario de dos frases y rellena un formulario fijo. Necesitas los cuatro archivos de un panel (definición, perfil, plantilla de brief y el argumentario como archivo de contexto). Aquí son los fixtures de prueba de BMAD+, copiados en `swarm/`; su contenido completo está impreso en [los archivos de ejemplo de la página de la CLI de enjambres](https://bmad-plus.rochetta.fr/es/docs/reference/cli-swarm/#sample-files). Pide 30 unidades. El presupuesto es 26, así que el primer intento se detiene y pide tu aprobación.

**Rechazado por exceder el presupuesto y luego aprobado con la misma semilla**

```text
$ npx --no-install bmad-plus swarm init --definition swarm/buyer-panel.json --profile swarm/profile.json --context pitch=swarm/pitch.md --n 30 --seed 7
buyer-panel-20261018-ghku: needs approval. The run needs 30 sub-agents and the budget is 26: ask the user, then re-run init with --approved --seed 7.
# Código de salida 2. Se te hace una frase: «Este panel necesita 30 subagentes; el presupuesto es 26. ¿Lo lanzo?» Dices que sí.
$ npx --no-install bmad-plus swarm init --definition swarm/buyer-panel.json --profile swarm/profile.json --context pitch=swarm/pitch.md --n 30 --seed 7 --approved
buyer-panel-20261018-nhq4: panel of 30 units, budget 26, approval user.
Seed 7 (same seed, same cards).
Next: bmad-plus swarm briefs buyer-panel-20261018-nhq4
$ npx --no-install bmad-plus swarm briefs buyer-panel-20261018-nhq4
buyer-panel-20261018-nhq4: 30 of 30 units need a sub-agent, in waves of 10.
Wave 1:
  B001  /work/demo/app/.bmad-plus/swarm/runs/buyer-panel-20261018-nhq4/briefs/B001.md
# ... 29 unidades más en tres oleadas ...
Each sub-agent: Read the brief and follow it exactly; it is your whole instruction.
Disclosure: Simulated units are not people. Read rates as an upper bound and confirm with real ones.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

Aquí es donde tu asistente lanza un subagente por brief, oleada tras oleada, con la única instrucción de leer su brief y seguirlo al pie de la letra. Esa parte corresponde a tu herramienta de IA y no se reproduce aquí. Para la demostración se escribieron a mano cinco respuestas en `answers/` (cuatro como archivos, una archivada con `save` a partir de una respuesta con una frase alrededor del JSON), y se rechazó una sexta respuesta con `"buys": "maybe"`.

**Las seis respuestas de la demostración (escritas a mano, como indica el texto de arriba)**

```text
# .bmad-plus/swarm/runs/<run id>/answers/B001.json
{ "id": "B001", "buys": false, "reason_code": "price", "reason": "Four twenty is steep for a drink I can get closer to home." }
# .../answers/B002.json
{ "id": "B002", "buys": true, "reason_code": "habit", "reason": "The free tenth drink and the remembered order fit my routine.", "price_floor": 3.5 }
# .../answers/B003.json
{ "id": "B003", "buys": true, "reason_code": "habit", "reason": "I pass the street every morning and order the same thing.", "visits_per_week": 5 }
# .../answers/B004.json
{ "id": "B004", "buys": false, "reason_code": "other", "reason": "I do not know the brand yet." }
# swarm/reply-b005.txt, filed with: swarm save <run id> B005 --input swarm/reply-b005.txt
Here is my answer as the buyer in my card:
{ "id": "B005", "buys": true, "reason_code": "need", "reason": "A quick stop two streets from the station is what my mornings need." }
# swarm/reply-b006.txt, refused by swarm save: field "buys" must be true or false
{ "id": "B006", "buys": "maybe", "reason_code": "price", "reason": "Not sure." }
```

<a id="example-idea-test-the-pitch"></a>
### Ejecutar el panel e informar con honestidad

Úsalo con los archivos del panel en su sitio. El asistente debe preguntar antes de superar el presupuesto y no debe responder por ninguna unidad.

**En tu asistente de IA**

```text
Lanza el enjambre buyer-panel con swarm/buyer-panel.json, swarm/profile.json y swarm/pitch.md como argumentario, 30 unidades, semilla 7. Pregúntame antes de superar el presupuesto. Lanza una oleada de subagentes cada vez, cada uno con la única instrucción de leer su brief y seguirlo. No escribas, arregles ni inventes ninguna respuesta. Cuando el recuento esté escrito, informa primero del aviso de transparencia, luego del número de respuestas válidas de 30, la tasa de compra con su denominador por segmento y por comportamiento, los códigos de motivo y las primeras citas, y nombra las unidades que no respondieron.
```

**Lo que deberías obtener** La negativa con código de salida 2 y la pregunta de una frase, luego tres oleadas de 10, un `check` que lista las unidades que falten y un informe que abre con «Simulated units are not people. Read rates as an upper bound and confirm with real ones.», seguido de cifras con sus denominadores. Las unidades que no respondieron se nombran, no se descartan en silencio.

<a id="step-6-read-the-tally"></a>
## Paso 6. Leer el recuento sin engañarte

**check, tally e inspect tras cinco respuestas válidas**

```text
$ npx --no-install bmad-plus swarm check buyer-panel-20261018-nhq4
buyer-panel-20261018-nhq4: 5 of 30 valid answers.
  B006  missing: no answer file
# ... B007 a B030 igual. Código de salida 1.
$ npx --no-install bmad-plus swarm tally buyer-panel-20261018-nhq4
/work/demo/app/.bmad-plus/swarm/runs/buyer-panel-20261018-nhq4/tally.md
5 of 30 units counted; 25 skipped.
Disclosure: Simulated units are not people. Read rates as an upper bound and confirm with real ones.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

**tally.md, inicio y sección de la tasa (archivo escrito por el comando anterior)**

```md
> Simulated units are not people. Read rates as an upper bound and confirm with real ones.

# Simulated buyers see the pitch (run buyer-panel-20261018-nhq4)

5 of 30 units gave a valid answer; 25 skipped: B006 (no answer file), B007 (no answer file), ...

## Rate: buys

| group | yes | of | rate |
|---|---|---|---|
| all | 3 | 5 | 60.0% |
| segment = mid career | 2 | 4 | 50.0% |
| segment = high earner | 1 | 1 | 100.0% |
| segment = early career | 0 | 0 | n/a |
| behaviour = occasional | 1 | 3 | 33.3% |
| behaviour = daily regular | 2 | 2 | 100.0% |
| behaviour = explorer | 0 | 0 | n/a |
```

1. Lee la primera línea: el aviso de transparencia. Son unidades simuladas, no clientes.
2. Lee el denominador antes que la tasa: «3 de 5» no es «el 60 por ciento de tu mercado», y aquí solo contaron 5 de 30 unidades. En una ejecución real, un gran número de unidades ausentes es en sí un hallazgo (un subagente que no siguió su brief), no ruido.
3. Un grupo sin respuesta válida muestra `n/a`. No muestra 0.
4. Las tasas son un tope máximo que confirmar con personas reales. Usa el panel para ver qué objeción aparece y dónde, y luego pregunta a clientes reales por ella.
5. Las citas de esta demostración están escritas a mano. En una ejecución real son literalmente lo que escribió una unidad simulada, atribuido a su id de unidad. Nunca las presentes como testimonios.

<a id="step-7-compare"></a>
## Paso 7. Comparar un segundo argumentario con los mismos compradores

Edita una copia del argumentario y vuelve a ejecutar `init` con el mismo perfil, `--n 30` y `--seed 7`, cambiando solo `--context pitch=...`. El id de ejecución es nuevo, las fichas son las mismas. Aquí el argumentario se dejó sin cambios para demostrar el punto: los dos archivos `cards.json` son idénticos byte a byte, así que cualquier diferencia que veas luego entre dos recuentos viene solo del argumentario.

**Misma semilla, mismas fichas**

```text
$ npx --no-install bmad-plus swarm init --definition swarm/buyer-panel.json --profile swarm/profile.json --context pitch=swarm/pitch.md --n 30 --seed 7 --approved
buyer-panel-20261018-5ucw: panel of 30 units, budget 26, approval user.
Seed 7 (same seed, same cards).
Next: bmad-plus swarm briefs buyer-panel-20261018-5ucw
$ cmp .bmad-plus/swarm/runs/buyer-panel-20261018-nhq4/cards.json .bmad-plus/swarm/runs/buyer-panel-20261018-5ucw/cards.json && echo identical
identical
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

<a id="step-8-remember"></a>
## Paso 8. Anotar lo que decidiste

La decisión que importó aquí (la página tiene un solo trabajo, abrir la tarjeta de fidelidad) tiene su sitio en la memoria del proyecto para que la sesión de mañana no la redescubra. Pide a Zecher que la anote en `decisions.md` y escriba un traspaso de sesión. El comando de diario registra el evento para recuperarlo después.

**Anotar un evento y luego recuperarlo**

```text
$ npx --no-install bmad-plus mem write --agent atelier --cli claude-code --task "Design read for the Orbit landing page: one job, the loyalty card sign-up" --outcome success --ci pass
mem write: event 4d5cbf08d26e appended (2026-10-18T20:19:27.139Z)
$ npx --no-install bmad-plus mem recall "loyalty card sign-up"
mem recall: 2 match(es) for "loyalty card sign-up" (scope: project)
  1. [0.707] event journal.ndjson#4d5cbf08d26e
  2. [0.507] note decisions.md § 2026-10-18 — The landing page has one job, the loyalty card sign-up
# Extracto. La segunda coincidencia es una entrada de decisión añadida a mano a decisions.md, con el formato de la plantilla instalada.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

<a id="step-9-uninstall"></a>
## Paso 9. Desinstalar conservando la memoria

La desinstalación solo quita los archivos de los que BMAD+ es propietario, es decir, idénticos byte a byte a lo que entregó, y los adaptadores que escribió, además del manifiesto. Conserva la memoria de tu proyecto, tus ajustes y cuanto es desconocido o modificado. El estado de ejecución de los enjambres, el intake de diseño y el brief también se quedan, porque son tu trabajo. `--yes` es obligatorio sin terminal.

**Desinstalar y lo que queda**

```text
$ npx --no-install bmad-plus uninstall --yes
●  BMAD+ v0.23.0 (installed 2026-10-18)
●  Selected packs: core, memory, design
◇  ✅ BMAD+ removed (120 items)
└  Project memory, settings, and unknown or modified files have been preserved.
$ find . -path ./.git -prune -o -path "./.bmad-plus/swarm/runs/*" -prune -o -print | sort
./.agents/memory/.brain-link
./.agents/memory/context.md
./.agents/memory/decisions.md
./.agents/memory/lessons.md
./.agents/memory/patterns.md
./.agents/memory/sessions
./.bmad/memory/journal.ndjson
./.bmad-plus/swarm/runs
./_bmad-output/design/brief.md
./_bmad-output/design/intake.json
./_bmad/config.yaml
# Extracto: tus propios archivos (README.md, swarm/, swarm-inbox/) y las carpetas vacías se omiten. `AGENTS.md`, `CLAUDE.md`, `.agents/skills/` y el manifiesto han desaparecido.
```

Salida capturada de una ejecución real. Fuente: Reproducido en un servidor de pruebas el 2026-10-18 con el código fuente 0.23.0 (tools/cli/bmad-plus-cli.js) en un proyecto Git desechable

<a id="example-idea-wrap-up"></a>
### Cerrar la sesión y conservar lo importante

Úsalo al final del tutorial, antes de desinstalar, con el pack Memory instalado.

**En tu asistente de IA**

```text
Zecher, cierra esta sesión. Anota en decisions.md la decisión de que la landing page tiene un solo trabajo (abrir la tarjeta de fidelidad) con su justificación, añade una lección sobre cómo leer el recuento del panel con su denominador y escribe un traspaso en sessions/. Registra el id de ejecución del panel y la semilla. Fechas en AAAA-MM-DD, no archives nada.
```

**Lo que deberías obtener** Una entrada de decisión fechada, una lección, un traspaso en `.agents/memory/sessions/` y un `context.md` actualizado. La desinstalación nunca sobrescribe los archivos de memoria, así que la sesión siguiente, con BMAD+ instalado o sin él, puede partir de ellos.

<a id="recap"></a>
## Resumen

**Los nueve pasos**

| Paso | Haces | Obtienes |
| --- | --- | --- |
| 1 | `install --packs core,design,memory`; `doctor` | Agentes, habilidades, adaptadores, un diagnóstico limpio |
| 2 | `/design read` y responder | Respuestas con un estado cada una |
| 3 | Leer `brief.md` | Un contrato que comprobaste: valores por defecto y desconocidos visibles |
| 4 | `/design build landing` | Una página que cita su propio veredicto de lista de comprobación |
| 5 | `swarm init` (aprobar), `briefs`, lanzar oleadas | Un panel bajo presupuesto, con una negativa a la que respondiste |
| 6 | `check`, `tally` | Tasas con denominadores, citas, el aviso de transparencia primero |
| 7 | `init` otra vez, misma semilla | Los mismos compradores para un antes y un después |
| 8 | Zecher, `mem write` | Una decisión, una lección y un traspaso en disco |
| 9 | `uninstall --yes` | BMAD+ quitado, tu trabajo y tu memoria conservados |

**Véase también**

- [El intake a fondo](https://bmad-plus.rochetta.fr/es/docs/concepts/intake/)
- [Los enjambres a fondo](https://bmad-plus.rochetta.fr/es/docs/concepts/swarm/)
- [La memoria a fondo](https://bmad-plus.rochetta.fr/es/docs/concepts/how-memory-works/)
- [El pack Design](https://bmad-plus.rochetta.fr/es/docs/packs/design/)
- [Instalar, actualizar, desinstalar](https://bmad-plus.rochetta.fr/es/docs/guides/install-lifecycle/)

[Documentación de BMAD+](https://bmad-plus.rochetta.fr/es/docs/) · [Guías](https://bmad-plus.rochetta.fr/es/docs/guides/)

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