Valida el cuestionario de un pack, planifica las siguientes preguntas, registra las respuestas con su estado y redacta el brief. Opciones, códigos de salida, salida real y errores.
Un intake es la lista de preguntas que un pack necesita ver respondidas antes de actuar. bmad-plus intake lleva la contabilidad: comprueba el archivo de preguntas, indica al asistente qué preguntar a continuación, registra lo que respondes y redacta un brief que pasa a ser el contrato de los siguientes pasos del pack. Nunca pregunta nada por sí mismo ni llama a ningún modelo: tu asistente (el asistente anfitrión) te pregunta en tu idioma y el comando guarda el registro. Lo necesita quien maneje un pack que incluya un intake; en 0.23.0 es el pack Design (.agents/skills/pack-design/intake.yaml, intake design-read).
<file>: valid intake <id> (<pack>), N questions, M must-have. o <file>: not a valid intake seguido de una línea - problem por fallo.
plan
Lee el intake y las respuestas; dice si el pack puede empezar y qué preguntar a continuación (primero las imprescindibles, nunca más de max_per_message).
<id> (<pack>): ready|not ready — A answered, D defaulted, U unknown, P not asked yet., Must-haves still open: …, Ask next (at most N per message): y una línea por pregunta.
record
Escribe las respuestas a través del validador: se comprueban tipo, límites y opciones, y un valor que no encaja se rechaza.
Recorded a, b in <answers>. (o Reset <answers>…), y luego las mismas líneas que plan.
render
Escribe el brief a partir del intake y las respuestas.
Brief written to <out> (N bytes); the intake is ready. o …; a must-have is still open.
answered: diste el valor (--set id=VALUE). Un valor que elegiste es answered, incluso si coincide con el valor por defecto.
defaulted: dejas que se mantenga el valor por defecto propuesto (--default id). El brief lo etiqueta como propuesta no confirmada por el usuario.
unknown: no lo sabes (--set id=UNKNOWN). El risk_if_unknown de la pregunta se copia en las respuestas y aparece en «Open questions» del brief.
Una pregunta imprescindible queda resuelta cuando está answered o unknown con su riesgo. Una imprescindible no puede llevar valor por defecto; el validador del cuestionario lo rechaza.
El cuestionario es un archivo YAML que se entrega con el pack. Campos de primer nivel: schema_version (debe ser 1), id y pack (slugs en minúsculas), title, language opcional (user o una etiqueta como fr), max_per_message opcional (entero de 1 a 20, 6 si falta) y sections. Cada sección tiene un id, un title y questions. Una pregunta tiene un id en snake_case, un ask, un kind (text, choice con al menos dos choices distintos, number con min y max opcionales, boolean, list) y, opcionalmente, must_have, default, feeds (anclas de artefactos como brief.md#surface) y risk_if_unknown. Una imprescindible exige risk_if_unknown y rechaza default. Los campos desconocidos se rechazan.
Lee: el archivo intake y, en plan, record y render, el archivo de respuestas. Cada archivo está limitado a 1 MiB (1.048.576 bytes) y debe ser un archivo normal.
Escribe: record escribe el archivo de respuestas (JSON, escritura atómica mediante un archivo temporal); render escribe el brief. Nada más.
Nunca escribe en: .git/, _bmad/, .bmad-plus/ ni node_modules/, a cualquier profundidad; una ruta que salga del proyecto; ninguna ruta que pase por un enlace simbólico.
record solo sobrescribe un archivo de respuestas del mismo id de intake. render solo sobrescribe un brief que él mismo escribió antes para el mismo intake (la segunda línea del archivo es la marca de propiedad).
Sin acceso a la red, sin procesos lanzados, sin llamar a ningún modelo.
Estas cuatro transcripciones proceden de la receta de aceptación humana de 0.23.0 (pack Design instalado en una aplicación de demostración). Se han quitado las líneas npm notice y el prompt del shell; el resto de la salida no se ha modificado. El plan previo a cualquier respuesta termina con el código 2.
Salida capturada de una ejecución real. Fuente: Capturado durante la receta de aceptación de la 0.23.0, el 2026-10-18 (paso 4)
Plan antes de cualquier respuesta (código de salida 2)
$ npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --directory .\demo-appdesign-read (design): not ready — 0 answered, 0 defaulted, 0 unknown, 13 not asked yet.Must-haves still open: surface_kind, audience, jobAsk next (at most 6 per message): - surface_kind [choice] Which surface is this? A marketing landing page, a dashboard, a data table, a form, an auth or onboarding flow, a mobile screen, an email, a chat or AI surface, a checkout, a settings page, or something else? (must-have; choices: landing, dashboard, table, form, auth, onboarding, mobile, email, ai-chat, checkout, settings, other) - audience [text] Who uses it, and in what situation (device, time pressure, expertise, frequency)? (must-have) - job [text] What is the one job this page must get done, and how will you know it did? (must-have) - brand_assets [choice] Which brand assets exist already? None, a partial set (a logo and a colour or two), or a full kit (logo, palette, type, voice)? (choices: none, partial, full) - design_system [choice] Is a design system or component library already in use? (choices: none, shadcn, radix, mantine, material, fluent, carbon, polaris, other; default: "none") - aesthetic_family [choice] Does the brief imply an aesthetic family? Minimalist, brutalist, soft editorial, premium dense, or none in particular? (choices: minimalist, brutalist, soft-editorial, premium-dense, none; default: "none")
npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --directory .\demo-app
Salida capturada de una ejecución real. Fuente: Capturado durante la receta de aceptación de la 0.23.0, el 2026-10-18 (paso 5)
Registrar tres respuestas
$ npx bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=dashboard --set "audience=Comptables en cabinet, sur ordinateur, en fin de mois" --set "job=Repérer les factures en retard et relancer en un clic" --directory .\demo-appRecorded surface_kind, audience, job in _bmad-output/design/intake.json.design-read (design): ready — 3 answered, 0 defaulted, 0 unknown, 10 not asked yet.Ask next (at most 6 per message): - brand_assets [choice] Which brand assets exist already? None, a partial set (a logo and a colour or two), or a full kit (logo, palette, type, voice)? (choices: none, partial, full) - design_system [choice] Is a design system or component library already in use? (choices: none, shadcn, radix, mantine, material, fluent, carbon, polaris, other; default: "none") - aesthetic_family [choice] Does the brief imply an aesthetic family? Minimalist, brutalist, soft editorial, premium dense, or none in particular? (choices: minimalist, brutalist, soft-editorial, premium-dense, none; default: "none") - variance [number] Layout variance, from 1 (symmetric and safe) to 10 (asymmetric and bold)? Leave it open and Atelier sets it from the surface. - motion [number] Motion, from 1 (static) to 10 (choreographed)? Leave it open and Atelier sets it from the surface. - density [number] Density, from 1 (gallery-sparse) to 10 (cockpit-packed)? Leave it open and Atelier sets it from the surface.
npx bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=dashboard --set "audience=Comptables en cabinet, sur ordinateur, en fin de mois" --set "job=Repérer les factures en retard et relancer en un clic" --directory .\demo-app
Salida capturada de una ejecución real. Fuente: Capturado durante la receta de aceptación de la 0.23.0, el 2026-10-18 (paso 5)
Redactar el brief y leer sus primeras líneas
$ npx bmad-plus intake render --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --out _bmad-output/design/brief.md --directory .\demo-appBrief written to _bmad-output/design/brief.md (3022 bytes); the intake is ready.$ Get-Content .\demo-app\_bmad-output\design\brief.md -TotalCount 3# Design read<!-- owned by bmad-plus intake design-read; written by bmad-plus intake render, do not edit -->
Salida capturada de una ejecución real. Fuente: Capturado durante la receta de aceptación de la 0.23.0, el 2026-10-18 (paso 5)
Cómo leerlo: tras tres respuestas, plan dice ready porque solo las tres imprescindibles (surface_kind, audience, job) bloquean el pack; las otras diez son opcionales y plan sigue ofreciéndolas, de seis en seis. La segunda línea del brief es la marca de propiedad: render podrá volver a sobrescribir este archivo y rechazará cualquier otro en esa ruta.
Preguntar primero, construir después: la lectura de diseño#
Pack Design instalado. El agente Atelier ejecuta el intake con este comando: tú respondes en lenguaje normal y nunca escribes los comandos.
En tu asistente de IA
Atelier, haz la lectura de diseño de la lista de facturas de mi aplicación y luego construye la pantalla.
Lo que deberías obtener El asistente ejecuta intake plan, obtiene el código 2 con las tres imprescindibles abiertas (surface_kind, audience, job) y te pregunta primero esas, con un máximo de seis preguntas por mensaje. Registra tus respuestas con intake record, comprueba que plan ya dice ready y redacta _bmad-output/design/brief.md con intake render. El brief lista cada respuesta con su estado; lo que dejaste abierto aparece en «Open questions» con su riesgo. La construcción parte después de ese brief.
Puedes avanzar sin respuesta a una imprescindible, pero el riesgo queda asociado a ella.
En tu asistente de IA
Atelier, todavía no sé quién usará esta pantalla. Anótalo como desconocido y continúa.
Lo que deberías obtener El asistente registra la pregunta con --set audience=UNKNOWN. El archivo de respuestas guarda el estado unknown y copia el risk_if_unknown de la pregunta; plan cuenta esa pregunta imprescindible como resuelta, pero el pack solo arranca cuando las otras dos imprescindibles, surface_kind y job, también están respondidas o son unknown con su riesgo. El brief muestra «Answer: unknown» con el riesgo y lo repite en «Open questions». No se inventa un público.