Dokumentation durchsuchen

bmad-plus intake

Den Fragebogen eines Packs prüfen, die nächsten Fragen planen, Antworten mit Status festhalten und das Briefing erzeugen. Optionen, Exit-Codes, echte Ausgabe und Fehler.

Auf dieser Seite
  1. Syntax
  2. Die vier Aktionen
  3. Was gelesen und geschrieben wird
  4. Exit-Codes
  5. Echte Ausgabe
  6. Fehler und was zu tun ist
  7. Beispiele

Ein Intake ist die Liste der Fragen, die ein Pack beantwortet haben muss, bevor es handelt. bmad-plus intake führt das Protokoll: Es prüft die Fragebogen-Datei, sagt dem Assistenten, welche Fragen als Nächstes zu stellen sind, hält deine Antworten fest und erzeugt ein Briefing, das zum Vertrag für die weiteren Schritte des Packs wird. Es fragt nie selbst und ruft kein Modell auf: Dein Assistent (der Host-Assistent) fragt dich in deiner Sprache, der Befehl führt die Aufzeichnung. Wer ein Pack mit Intake bedient, braucht ihn; in 0.23.0 ist das das Design-Pack (.agents/skills/pack-design/intake.yaml, Intake design-read).

Syntax

Im Terminal deines Projekts
npx bmad-plus intake check FILE [--json]
npx bmad-plus intake plan   --intake FILE --answers FILE [--json]
npx bmad-plus intake record --intake FILE --answers FILE [--set id=VALUE]... [--default id]... [--reset] [--json]
npx bmad-plus intake render --intake FILE --answers FILE --out FILE [--json]

Optionen von bmad-plus intake
OptionArgumentStandardWirkung
<action>check, plan, record, renderPflichtDer auszuführende Schritt.
[file]PfadkeinerZu prüfende Intake-Datei. Nur für check.
-d, --directory <path>Pfadaktuelles VerzeichnisProjektverzeichnis. Alle anderen Pfade sind relativ dazu und müssen darin bleiben.
--intake <file>PfadkeinerIntake-Datei (der Fragebogen). Pflicht bei plan, record, render.
--answers <file>PfadkeinerAntwortdatei. Wird von record angelegt; Pflicht bei plan, record, render.
--set <id=VALUE>id=WERTkeinerHält eine Antwort fest. id=UNKNOWN markiert die Frage als unbekannt und übernimmt ihr Risiko. Wiederholbar, einmal je Frage und Aufruf.
--default <id>Frage-IDkeinerHält den vorgeschlagenen Standardwert einer Frage als defaulted fest. Wiederholbar.
--resetkeinerausBeginnt für diesen Intake mit einer leeren Antwortdatei und wendet danach --set und --default desselben Aufrufs an.
--out <file>PfadkeinerZu schreibendes Briefing. Pflicht bei render.
--jsonkeinerausMaschinenlesbare Ausgabe mit schemaVersion: 1 und einem Feld status.

Die vier Aktionen

Was jede Aktion tut
AktionAufgabeGibt aus (Textausgabe)
check FILEPrüft eine Intake-Datei gegen den Vertrag.<file>: valid intake <id> (<pack>), N questions, M must-have. oder <file>: not a valid intake, danach je Problem eine Zeile - problem.
planLiest Intake und Antworten; sagt, ob das Pack starten darf und welche Fragen als Nächstes zu stellen sind (Pflichtangaben zuerst, nie mehr als 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): und eine Zeile je Frage.
recordSchreibt Antworten durch den Validator: Art, Grenzen und Auswahl werden geprüft, ein unpassender Wert wird abgelehnt.Recorded a, b in <answers>. (oder Reset <answers>…), danach dieselben Zeilen wie bei plan.
renderSchreibt das Briefing aus Intake und Antworten.Brief written to <out> (N bytes); the intake is ready. oder …; a must-have is still open.

Antwortstatus

  • answered: Du hast den Wert genannt (--set id=VALUE). Ein Wert, den du gewählt hast, ist answered, auch wenn er dem Standard entspricht.
  • defaulted: Du lässt den vorgeschlagenen Standardwert stehen (--default id). Das Briefing kennzeichnet ihn als Vorschlag, der nicht vom Nutzer bestätigt wurde.
  • unknown: Du weißt es nicht (--set id=UNKNOWN). Das risk_if_unknown der Frage wird in die Antworten kopiert und im Briefing unter „Open questions“ aufgeführt.
  • Eine Pflichtfrage gilt als erledigt, sobald sie answered oder unknown mit ihrem Risiko ist. Eine Pflichtfrage darf keinen Standardwert tragen; der Fragebogen-Validator lehnt ihn ab.

Die Intake-Datei

Der Fragebogen ist eine YAML-Datei, die mit dem Pack ausgeliefert wird. Felder der obersten Ebene: schema_version (muss 1 sein), id und pack (Slugs in Kleinbuchstaben), title, optional language (user oder ein Tag wie fr), optional max_per_message (ganze Zahl 1 bis 20, ohne Angabe 6) und sections. Jeder Abschnitt hat id, title und questions. Eine Frage hat eine id in snake_case, ein ask, ein kind (text, choice mit mindestens zwei verschiedenen choices, number mit optionalem min und max, boolean, list) und optional must_have, default, feeds (Artefakt-Anker wie brief.md#surface) und risk_if_unknown. Eine Pflichtfrage braucht risk_if_unknown und verbietet default. Unbekannte Felder werden abgelehnt.

Was gelesen und geschrieben wird

  • Liest: die Intake-Datei und, bei plan, record und render, die Antwortdatei. Jede Datei ist auf 1 MiB (1.048.576 Bytes) begrenzt und muss eine reguläre Datei sein.
  • Schreibt: record schreibt die Antwortdatei (JSON, atomar über eine temporäre Datei); render schreibt das Briefing. Sonst nichts.
  • Schreibt nie in: .git/, _bmad/, .bmad-plus/ und node_modules/ in beliebiger Tiefe; in einen Pfad außerhalb des Projekts; über einen Symlink.
  • record überschreibt nur eine Antwortdatei derselben Intake-ID. render überschreibt nur ein Briefing, das es selbst für denselben Intake geschrieben hat (die zweite Zeile der Datei ist die Besitzmarke).
  • Kein Netzwerkzugriff, kein gestarteter Prozess, kein Modellaufruf.

Exit-Codes

Exit-Codes von bmad-plus intake
CodeBedeutung
0check: Datei gültig. plan: bereit, jede Pflichtfrage ist beantwortet oder unbekannt mit Risiko. record und render: erledigt.
1Jeder Fehler (ausgegeben als Intake: <message>) oder check hat die Datei als ungültig erkannt.
2Nur plan: nicht bereit, mindestens eine Pflichtfrage ist noch offen.

Echte Ausgabe

Diese vier Mitschnitte stammen aus dem menschlichen Abnahmelauf von 0.23.0 (Design-Pack in einer Demo-App). Die npm notice-Zeilen und der Shell-Prompt sind entfernt; die Ausgabe ist sonst unverändert. Der plan vor der ersten Antwort endet mit Code 2.

Den Fragebogen des Design-Packs prüfen
npx bmad-plus intake check .agents/skills/pack-design/intake.yaml --directory .\demo-app
.agents/skills/pack-design/intake.yaml: valid intake design-read (design), 13 questions, 3 must-have.

Ausgabe eines echten Laufs. Quelle: Aufgezeichnet im Abnahmelauf der 0.23.0 am 2026-10-18 (Schritt 4)

Plan vor jeder Antwort (Exit-Code 2)
npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --directory .\demo-app
design-read (design): not ready — 0 answered, 0 defaulted, 0 unknown, 13 not asked yet.
Must-haves still open: surface_kind, audience, job
Ask 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")

Ausgabe eines echten Laufs. Quelle: Aufgezeichnet im Abnahmelauf der 0.23.0 am 2026-10-18 (Schritt 5)

Drei Antworten festhalten
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
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.
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.

Ausgabe eines echten Laufs. Quelle: Aufgezeichnet im Abnahmelauf der 0.23.0 am 2026-10-18 (Schritt 5)

Das Briefing erzeugen und seine ersten Zeilen lesen
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-app
Brief 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 -->

Ausgabe eines echten Laufs. Quelle: Aufgezeichnet im Abnahmelauf der 0.23.0 am 2026-10-18 (Schritt 5)

So liest du es: Nach drei Antworten meldet plan ready, weil nur die drei Pflichtfragen (surface_kind, audience, job) das Pack blockieren; die übrigen zehn bleiben optional, und plan bietet sie weiter an, jeweils sechs. Die zweite Zeile des Briefings ist die Besitzmarke: render darf diese Datei erneut überschreiben und lehnt jede andere Datei an diesem Pfad ab.

Fehler und was zu tun ist

Meldungen von bmad-plus intake
MeldungUrsacheWas tun
Intake: --intake is required for intake plan (ebenso für --answers, --out)Eine Pflichtoption fehlt.Die in der Meldung genannte Option ergänzen.
Intake: Use intake check FILE.check ohne Datei aufgerufen.Die Intake-Datei angeben: intake check .agents/skills/pack-design/intake.yaml.
Intake: Use intake check FILE, plan, record or render.Unbekannte Aktion.Eine der vier Aktionen verwenden.
<file>: not a valid intake + Zeilen - … (Code 1)Der Fragebogen verletzt den Vertrag, etwa ein unbekanntes Feld oder eine Pflichtfrage ohne risk_if_unknown.Jedes aufgelistete Problem in der Intake-Datei beheben, dann check erneut ausführen. Bei der Datei eines ausgelieferten Packs: Pack neu installieren oder aktualisieren.
Intake: nothing to record: pass --set id=VALUE, --default id or --resetrecord ohne etwas zum Festhalten.--set, --default oder --reset angeben.
Intake: --set expects id=VALUE, got "…"Der Zuweisung fehlt das =.--set id=VALUE schreiben.
Intake: question "x" is set twice in one callDieselbe Frage kommt zweimal in --set/--default vor.Jede Frage nur einmal pro Aufruf angeben.
Intake: no question "x" in intake "y"Die ID steht nicht im Fragebogen.Die ID aus der Ausgabe von plan übernehmen.
Intake: question "x" has no default--default bei einer Frage ohne Standardwert.--set x=VALUE oder --set x=UNKNOWN verwenden.
Intake: x: value must be one of … (oder needs a finite number, must be at least N, needs true or false, …)Der Wert passt nicht zu Art oder Grenzen der Frage.Erneut fragen und einen passenden Wert festhalten. Es wurde nichts geschrieben.
Intake: <answers> does not answer this intake: … + Record again with --reset to start over.Die Antwortdatei passt nicht mehr zum Fragebogen (nach dem Festhalten der Antworten geändert).record --reset ausführen und die Fragen erneut stellen.
Intake: <file>: exists and belongs to "other", not to intake "y"; move it away or pick another pathAm Antwortpfad liegt die Datei eines anderen Intakes.Einen anderen --answers-Pfad wählen.
Intake: <file>: exists and is not a brief of intake "y" (its second line is not the ownership marker); move it away or pick another pathrender weigert sich, eine Datei zu überschreiben, die es nicht geschrieben hat.Einen anderen --out-Pfad wählen oder die Datei verschieben.
Intake: <file>: the intake never writes under _bmad/ (auch .git/, .bmad-plus/, node_modules/)Der Ausgabepfad liegt in einem reservierten Baum.Antworten und Briefing anderswo ablegen, etwa unter _bmad-output/.
Intake: <file>: outside the project directory <root>Der Pfad verlässt das Projekt.Einen Pfad im Projekt verwenden oder --directory ändern.

Beispiele

Erst fragen, dann bauen: die Design-Analyse

Design-Pack installiert. Der Agent Atelier führt den Intake mit diesem Befehl durch: Du antwortest in normaler Sprache und tippst die Befehle nie selbst.

In deinem KI-Assistenten
Atelier, mach die Design-Analyse für die Rechnungsliste meiner App und baue danach den Bildschirm.

Das solltest du erhalten Der Assistent führt intake plan aus, erhält Code 2 mit den drei offenen Pflichtfragen (surface_kind, audience, job) und stellt dir zuerst diese, höchstens sechs Fragen pro Nachricht. Er hält deine Antworten mit intake record fest, prüft, dass plan nun ready meldet, und erzeugt _bmad-output/design/brief.md mit intake render. Das Briefing listet jede Antwort mit ihrem Status; was du offen gelassen hast, steht mit seinem Risiko unter „Open questions“. Der Bau startet dann aus diesem Briefing.

Bewusst „weiß ich nicht“ sagen

Du kannst ohne Antwort auf eine Pflichtfrage weitermachen, aber das Risiko bleibt an ihr hängen.

In deinem KI-Assistenten
Atelier, ich weiß noch nicht, wer diesen Bildschirm nutzen wird. Halte es als unbekannt fest und mach weiter.

Das solltest du erhalten Der Assistent hält die Frage mit --set audience=UNKNOWN fest. Die Antwortdatei speichert den Status unknown und kopiert das risk_if_unknown der Frage; plan zählt diese Pflichtfrage als erledigt, aber das Pack startet erst, wenn auch die beiden anderen Pflichtfragen, surface_kind und job, beantwortet oder unknown mit ihrem Risiko sind. Das Briefing zeigt „Answer: unknown“ mit dem Risiko und wiederholt es unter „Open questions“. Eine Zielgruppe wird nicht erfunden.