CLI
Jeder Blume-Befehl und jedes Flag an einem Ort erklärt — init, dev, build, preview, add, sync und eject — zusammen mit den Optionen, die jeder davon akzeptiert.
blume <command> [options]
Befehle
| Befehl | Beschreibung |
|---|---|
blume init [dir] |
Ein Projekt aufsetzen (standardmäßig interaktiv). |
blume dev |
Den Dev-Server mit Hot Reload starten. |
blume build |
Die statische Site (oder Server-Site) bauen. |
blume preview |
Den letzten Build in der Vorschau ansehen. |
blume add <item> |
Eine Quellkomponente aus der Registry installieren. |
blume sync |
Entfernte Inhaltsquellen erneut abrufen und neu generieren. |
blume eject |
Die Laufzeitumgebung in eine eigenständige Astro-App überführen. |
blume check |
Die Site mit astro check typprüfen. |
blume doctor |
Konfigurations- und Inhaltsprobleme diagnostizieren. |
blume validate |
Links in deinen Inhalten validieren. |
blume audit |
Die gebaute Site auf SEO- und Gesundheitsprobleme prüfen. |
blume eval |
Die Dokumentation testen: Ein Agent beantwortet deine Fragen ausschließlich anhand der Dokumentation. |
blume translate |
Die Dokumentation mit einer lokalen Agent-CLI in die konfigurierten Sprachen übersetzen. |
Gängige Flags
blume init— führt dich im Terminal durch einige Fragen (wo das Projekt erstellt werden soll, Site-Name, Vorlage, Inhaltsquellen); jedes der folgenden Flags beantwortet seine Frage vorab.blume init --yes— die Abfragen überspringen und mit Standardwerten aufsetzen (auch das Verhalten in CI oder wenn stdin kein Terminal ist).blume init --content-dir <dir>— den Inhaltsordner festlegen (Standarddocs).blume init --template docs|api|sdk|changelog— aus einer Startvorlage aufsetzen (API-Referenz, SDK oder Changelog statt des einfachen Docs-Grundgerüsts).blume init --package-manager npm|pnpm|yarn|bun— die ausgegebenen nächsten Schritte auf deinen Paketmanager zuschneiden.blume init --eject— aufsetzen und anschließend zu einem eigenständigen Astro-Projekt ejecten (führt dich ersatzweise durchblume eject, wenn die Abhängigkeiten noch nicht installiert sind).blume dev --host --port <n> --openblume dev --content-dir <dir>— einen anderen Inhaltsordner einlesen, ohneblume.config.tszu bearbeiten.blume dev --debug— ausführliches Astro-/Vite-Logging zur Fehlersuche.blume dev --preview/blume build --preview— Entwürfe und unveröffentlichte CMS-Inhalte einbeziehen.blume build --no-strict— trotz Diagnosefehlern bauen. Standardmäßig schlägtblume buildbei jeder Fehlerdiagnose fehl (Exit 1), da Seiten, die die Frontmatter-Validierung nicht bestehen, aus der Ausgabe entfernt werden; mit--no-strictgelingt der Build und meldet, wie viele Seiten fehlen.blume dev --strictaktiviert dasselbe Fail-Fast-Verhalten für den Dev-Modus.blume build --output static|server --adapter vercel|node|netlify|cloudflare --base /docs— die Deployment-Ausgabe, den Adapter und den Basispfad ausblume.config.tsüberschreiben.blume build --analyze— nach dem Build die Größen der Client-JavaScript-Bundles ausgeben (größte zuerst).blume build --budget-js <kb> --budget-css <kb>— den Build fehlschlagen lassen, wenn das gesamte Client-JavaScript/CSS das Budget überschreitet, und so ein Performance-Ziel in ein CI-Gate verwandeln.blume build --isolated— in eine wegwerfbare.blume-verify/-Laufzeitumgebung (mit eigenemdist/) statt nach.blume/bauen, sodass ein laufenderblume dev-Server und dein echtesdist/unangetastet bleiben. Siehe Verifizieren, während der Dev-Server läuft.blume preview --host --port <n>— den Vorschauserver binden.blume sync --force— entfernte Quellen erneut abrufen und dabei zuerst den zwischengespeicherten Snapshot verwerfen.blume add <item> --force— bereits vorhandene Dateien überschreiben.blume check --preview— beim Prüfen Entwürfe und unveröffentlichte CMS-Inhalte einbeziehen.blume check --strict— auch bei Inhaltsdiagnosen fehlschlagen, nicht nur bei Typfehlern.blume check --isolated— in einer wegwerfbaren.blume-verify/-Laufzeitumgebung typprüfen, sodass ein laufenderblume dev-Server unangetastet bleibt. Siehe Verifizieren, während der Dev-Server läuft.blume eject --yes— die Bestätigungsabfrage überspringen.blume validate --external— zusätzlich externe Links über das Netzwerk prüfen.blume validate --strict— auch bei Warnungen mit einem Exit-Code ungleich null beenden.blume validate --json/blume doctor --json— Diagnosen als JSON auf stdout ausgeben (mitcode,severity,file,line/columnunddocsUrl) für CI- und Editor-Integrationen.blume audit --fail-on error|warning|info— das CI-Gate; Standard isterror.--strictist ein Alias für--fail-on warning.blume audit --url <origin>— zusätzlich ein laufendes Deployment auf Statuscodes, Response-Header und Redirect-Ketten prüfen.blume audit --external— ausgehende Links über das Netzwerk prüfen.blume audit --only <check|category>/--skip <check|category>— den Bericht eingrenzen, während du ihn abarbeitest (kommagetrennt).blume audit --list-checks— jede Prüfung ausgeben, die das Audit melden kann.blume audit --verbose— jede betroffene Seite mit allen Details zum jeweiligen Befund auflisten, etwa welches Linkziel defekt ist.blume audit --json— den Bericht als JSON auf stdout ausgeben.blume audit --claude/--codex— die Befunde an Claude Code oder Codex übergeben, um sie interaktiv zu beheben.blume eval— die Fragen inevals.yamldurch einen Agenten laufen lassen, der ausschließlich deine Dokumentation liest; siehe Evals.blume eval init— den Agenten eine ersteevals.yamlaus deiner Dokumentation entwerfen lassen.blume eval --agent claude|codex --threshold <0..1> --timeout <seconds> --json --fix --verbose— siehe Evals für die einzelnen Flags.blume translate --claude/--codex— fehlende und veraltete Seiten in deine konfigurierten Sprachen übersetzen; siehe Translate.blume translate --check— Übersetzungsdrift melden und mit einem Exit-Code ungleich null beenden (das CI-Gate), ohne einen Agenten auszuführen.blume translate --locale <codes> --concurrency <n> --force --timeout <seconds> --json— siehe Translate für die einzelnen Flags.
Verifizieren, während der Dev-Server läuft
blume dev betreibt einen Live-Astro-Server, der in der generierten .blume/-Laufzeitumgebung verwurzelt ist, und regeneriert sie bei jeder Änderung. blume build und blume check regenerieren dieselbe .blume/, sodass beide sie beschädigen würden, wenn sie bei laufendem Dev-Server ausgeführt werden — beide verweigern die Ausführung mit einem Fehler und beenden sich mit einem Exit-Code ungleich null:
A `blume dev` server is running at http://localhost:3000; building would
corrupt its .blume runtime. Reuse that server, stop it first, or re-run with
--isolated to build/verify against .blume-verify without touching it.
Das Flag --isolated ist der Notausgang. Es verlagert die gesamte generierte Laufzeitumgebung (und bei build auch deren Ausgabe dist/) in ein benachbartes Verzeichnis .blume-verify/, sodass die Verifizierung nie etwas schreibt, worauf der Dev-Server — oder dein echtes dist/ — angewiesen ist:
# In a second terminal, while `blume dev` is running:
blume check --isolated # fast: type-check the .astro/config changes
blume build --isolated # thorough: full production render into .blume-verify/dist
check --isolated ist der schnelle Weg (Astro-Typ- und Template-Diagnosen, kein dist/); build --isolated ist der aufwendigere, der auch Renderfehler zur Laufzeit erkennt. Isolierte Builds überspringen die Deploy-Nachbearbeitungsschritte (Suchindex, Sync mit gehosteten Anbietern, llms.txt, Sitemap/robots, Weiterleitungen) — eine Verifizierung muss nur bestätigen, dass die Site kompiliert und rendert, nicht sie veröffentlichen. --analyze sowie die Gates --budget-js/--budget-css laufen weiterhin und werden gegen die isolierte Ausgabe gemessen. Blume fügt .blume-verify/ automatisch zu deiner .gitignore hinzu.
Das ist besonders nützlich, wenn ein Coding-Agent Änderungen verifizieren muss, während du den Dev-Server geöffnet lässt. Damit einfaches blume build/blume check auch ohne das Flag isoliert — zum Beispiel in der Shell eines Agenten — setze BLUME_RUNTIME_DIR auf das zu verwendende Laufzeitverzeichnis:
export BLUME_RUNTIME_DIR=.blume-verify
Typprüfung
blume check führt astro check über dein Projekt aus. Es regeneriert die .blume-Laufzeitumgebung, synchronisiert die Inhaltstypen von Astro und meldet dann alle TypeScript-Fehler — in deiner blume.config.ts, in eigenen .astro-Seiten und in den Komponenten, die diese importieren. Es beendet sich mit einem Exit-Code ungleich null, wenn Fehler vorliegen, und eignet sich damit als typecheck-Schritt in CI:
{
"scripts": {
"typecheck": "blume check"
}
}
Füge deinem Projektstammverzeichnis eine tsconfig.json hinzu, die Astros Konfiguration erweitert, damit verfasste Seiten blume/*-Importe und virtuelle Module wie blume:data auflösen:
{
"extends": "astro/tsconfigs/strict",
"include": [".blume/.astro/types.d.ts", ".blume/src/env.d.ts", "**/*"]
}
Ohne eine tsconfig.json im Projekt wird nur die generierte Laufzeitumgebung geprüft.
Links validieren
blume validate prüft jeden in deinen Inhalten gefundenen Link:
- Interne Seitenlinks (
/guides/intro,./sibling) müssen auf eine echte Seite verweisen — defekte werden als Fehler gemeldet. - Ankerlinks (
#section,/guides/intro#setup) müssen einer Überschrift auf der Zielseite entsprechen — Fehlschläge sind Warnungen. - Asset-Links (
/logo.png) werden gegen das Verzeichnispublic/geprüft. - Externe Links werden nur mit
--externalgeprüft (standardmäßig aus, da dies das Netzwerk erfordert); tote Links (404/410/nicht erreichbar) sind Fehler, während ratenbegrenzte oder vorübergehende Antworten (403/429/5xx/Timeout) Warnungen sind.
Die gebaute Site auditieren
blume validate liest deine Inhalte; blume audit liest die gebaute Site. Es crawlt nach einem Build das HTML in dist/ und meldet SEO- und Site-Gesundheitsprobleme — Titel, Meta-Beschreibungen, Canonicals, Open-Graph- und X-Cards, Überschriften, hreflang, Bilder, die Sitemap, robots.txt und strukturierte Daten.
Da Blume die Site gebaut hat, nennt jeder Befund die Quelldatei und die Frontmatter-Zeile, die ihn behebt, nicht nur die URL, die ein Crawler sehen würde:
⚠ Meta description too long or too short 5 pages
/docs/configuration/export content/docs/configuration/export.mdx:3
fix: Rewrite `description` in the frontmatter to fit the length range.
Führe es nach einem Build aus:
blume build
blume audit
Befunde werden nach Prüfung gruppiert statt pro Seite aufgelistet, sodass sich der Bericht wie eine To-do-Liste liest. Verwende --verbose, um jede betroffene Seite mit allen Details aufzuklappen, und --only/--skip, um eine Kategorie nach der anderen abzuarbeiten. blume audit --list-checks gibt den vollständigen Katalog aus.
CI fehlschlagen lassen
Der Exit-Code ist der Vertrag. Standardmäßig schlägt blume audit nur bei Fehlern fehl — Dinge, die definitiv kaputt sind, etwa ein Link auf eine nie gebaute Seite, eine Weiterleitungsschleife oder eine ungültige Sitemap. Hinweisende Befunde (eine kurze Beschreibung, ein doppelter Titel) sind Warnungen und lassen den Build nicht fehlschlagen:
blume audit # fails on errors
blume audit --fail-on warning # also fails on warnings
Ein laufendes Deployment prüfen
Manches kann dir nur der echte Server sagen: ob eine Seite, die in dist/ existiert, hinter einem fehlerhaften Rewrite tatsächlich einen 404 liefert, ob Antworten komprimiert werden und ob ein X-Robots-Tag-Header stillschweigend eine Seite deindexiert, deren HTML völlig einwandfrei aussieht. Richte das Audit auf ein Deployment, um diese Prüfungen hinzuzufügen:
blume audit --url https://docs.example.com
blume audit --url https://docs.example.com --external # also probe outbound links
Ausgehende Links werden abgestuft bewertet statt pauschal als Fehler gewertet: Ein 404 ist ein defekter Link, den du beheben kannst, während ein 403 oder 5xx meist auf Ratenbegrenzung oder eine fremde Störung zurückgeht und als Warnung gemeldet wird.
Die Befunde mit einem Agenten beheben
Wenn du Claude Code oder Codex verwendest, kann das Audit seine Befunde direkt daran übergeben:
blume audit --claude # or --codex
Dabei wird der vollständige JSON-Bericht — jede betroffene Seite, nicht die Drei-Seiten-Vorschau des Terminals — in eine Datei geschrieben und der Agent interaktiv mit einem Prompt geöffnet, der ihn durch die Befunde führt: die von jedem Befund genannte Quelldatei bearbeiten, den vorgeschlagenen Fix anwenden und dann blume build und blume audit erneut ausführen, bis der Bericht sauber ist. Die Sitzung ist bewusst interaktiv: Du prüfst die Änderungen über den eigenen Berechtigungsablauf des Agenten, und dem Agenten wird gesagt, dass er einen Befund niemals durch Löschen von Inhalten beheben darf.
--only und --skip grenzen die Übergabe genauso ein, wie sie den Bericht eingrenzen, sodass du eine Kategorie nach der anderen schicken kannst.
Was es prüft und was nicht
Der Prüfumfang ist bewusst enger als der eines allgemeinen SEO-Crawlers. Vieles, was ein solcher Crawler meldet, kann einer Blume-Site gar nicht passieren — sie gibt nie rel=nofollow aus, und Vites inhaltsgehashte Bundles fehlen nie und leiten nie um — und das als dauerhafte Nullwerte zu melden, würde dir nur beibringen, den Bericht zu ignorieren.
Zwei Grenzen, die es klar zu benennen gilt:
- Strukturierte Daten werden auf Wohlgeformtheit geprüft (gültiges JSON, ein
@context, ein@typean jedem Knoten). Blume validiert nicht gegen das gesamte schema.org-Vokabular oder Googles Rich-Results-Regeln. - Core Web Vitals werden nicht geprüft. Sie brauchen einen echten Browser, und ein Flag, das stillschweigend nichts misst, wäre schlimmer, als keines zu haben — daher meldet
blume auditdie Ursachen für Layout-Verschiebungen, die es offline sehen kann (Bilder ohnewidth/height, überdimensionierte Assets), und lässt den Rest vorerst außen vor.
Alles, was das Audit nicht ausgeführt hat, wird als übersprungen gemeldet, statt stillschweigend zu bestehen:
⊘ network skipped — pass --url <origin> (11 checks)
⊘ external skipped — pass --external (2 checks)