Feast CLI
Steuere die Feastalytics-Plattform direkt aus dem Terminal. Die feast-CLI bietet die gleiche Werkzeugoberfläche, die auch der In-App-KI-Agent nutzt (Kampagnen, Automatisierungen, Angebote, Funnels, Mitgliederprogramm) – als einfache Befehle, die als eingeloggter Benutzer die Produktions-API aufrufen.
Die CLI ist die maßgebliche Quelle dafür, welche Werkzeuge existieren und was sie akzeptieren – immer zur Laufzeit ermitteln, nicht annehmen, da der Werkzeugsatz wächst, sobald neue Endpunkte getaggt werden. Deine Aufgabe ist es, das richtige Werkzeug auszuwählen, es auf die richtige Organisation zu beschränken und gültige Eingaben zu übergeben.
Voraussetzungen
Die feast-CLI muss installiert und im PATH sein:
npm install -g @feastalytics/cli # oder ad-hoc ausführen mit: npx @feastalytics/cli <command>
Einmal authentifizieren – Tokens werden in ~/.config/feast-cli/credentials.json zwischengespeichert und automatisch erneuert:
feast login # öffnet einen Browser zur Autorisierung (Standard)
feast login --password [username] # headless / CI: Benutzername + Passwort-Eingabeaufforderung, kein Browser
Wenn ein Befehl meldet, dass du nicht eingeloggt bist oder die Sitzung abgelaufen ist, führe feast login erneut aus.
Immer auf dem neuesten Stand bleiben
Weder die CLI noch diese Fähigkeit aktualisiert sich selbst. Wenn ein Befehl einen Update-Hinweis auf stderr ausgibt:
Update available: feast 0.1.1 → 0.2.0
aktualisiere beides und teile dem Benutzer in einem Satz mit, dass du es getan hast:
npm install -g @feastalytics/cli@latest # nur, wenn `feast` bereits über eine globale Installation im PATH ist
npx skills add feastalytics/cli -g -a '*' -y # aktualisiert diese Fähigkeit aus dem Repository
Wenn du die CLI über npx anstelle einer globalen Installation aufgerufen hast, überspringe npm install -g und verwende stattdessen npx @feastalytics/cli@latest <command> für den Rest der Sitzung – npx würde sonst eine zwischengespeicherte Kopie wiederverwenden.
Aktualisiere die Fähigkeit immer, wenn du die CLI aktualisierst: Beide stammen aus demselben Repository, aber werden durch unterschiedliche Auslöser bereitgestellt, daher bedeutet eine neue CLI-Version in der Regel, dass sich auch die Anleitung dieser Fähigkeit geändert hat. Wenn die globale Installation aufgrund von Berechtigungen fehlschlägt, versuche es nicht erneut mit sudo – informiere den Benutzer und falle auf npx @feastalytics/cli@latest zurück.
Der Kernablauf: discover → describe → call
Rate keine Werkzeugnamen oder Eingabeformate. Untersuche die Live-CLI:
feast tools # listet jedes verfügbare Werkzeug, seinen Bereich und ob es Daten ändert
feast describe <tool> # vollständige Beschreibung + JSON-Eingabeschema für ein Werkzeug
feast call <tool> --org <organizationId> --input '<json>'
describe ein unbekanntes Werkzeug immer, bevor du es aufrufst – das Schema zeigt die genauen erforderlichen Felder an, und die CLI validiert dein --input lokal dagegen, bevor etwas gesendet wird. Ein ungültiger Payload führt also schnell zu einer klaren Fehlermeldung anstelle eines verwirrenden Serverfehlers.
Organisationen: Die API darf nie raten
Die meisten Werkzeuge wirken auf eine Organisation. Ein Benutzer gehört oft zu mehreren, daher spielt es eine Rolle, welche Organisation du anvisierst, und das muss explizit sein.
feast whoami # zeigt den eingeloggten Benutzer und jede Organisation (mit Namen) an, auf die er zugreifen kann
Übergib die Zielorganisation mit --org <organizationId>:
- Wenn der Benutzer eine Organisation nennt, löse sie mit
feast whoamiin ihre ID auf und übergib diese ID. - Wenn der Benutzer zu genau einer Organisation gehört, verwendet die CLI sie automatisch – kein Flag nötig.
- Wenn er zu mehr als einer gehört und du
--orgweglässt, verweigert die CLI die Ausführung und listet die Organisationen auf, anstatt stillschweigend eine auszuwählen. Das ist beabsichtigt: Auf der falschen Organisation zu handeln, ist schlimmer, als anzuhalten und nachzufragen. Wenn das passiert, zeige dem Benutzer die Liste und lass ihn bestätigen, welche er meint.
Lesezugriffe vs. Schreibzugriffe
Abfrage-Werkzeuge (Auflisten, Beschreiben, Lesen) sind sicher und schreibgeschützt. Mutationswerkzeuge (Erstellen, Aktualisieren, Klonen, Löschen, Anwenden) ändern Produktionsdaten.
- Mutationen erfordern explizit
--org. - Bevor eine ausgeführt wird, löst die CLI die Organisation serverseitig auf und gibt ihren Namen aus, sodass ein falsches
--orgals falsches Restaurant und nicht als undurchsichtige ID erscheint. Lies diese Zeile. - Es gibt keine Bestätigungsaufforderung. Eine Mutation wird sofort ausgeführt, wenn du sie aufrufst. Nichts fragt zweimal nach, und nichts macht sie rückgängig.
Der letzte Punkt ist am wichtigsten für die Werkzeuge, die die reale Welt erreichen und nicht nur die Datenbank. Der Kauf einer Telefonnummer belastet das Konto. Die Genehmigung eines Creator-Besuchs oder die Entscheidung über eine Einreichung sendet dieser Person sofort eine SMS und kann nicht rückgängig gemacht werden. Die Veröffentlichung einer Kampagne schaltet sie live, und die Preisgestaltung einer wiederkehrenden Promotion erstellt echte Stripe-Produkte. Das Speichern von Automatisierungsänderungen verändert, was Gäste erhalten. Behandle diese als unwiderruflich und kläre die Absicht des Benutzers vor dem Aufruf, denn es gibt keine Sicherung danach.
Lies lieber vor dem Schreiben: z. B. listCampaigns, um die richtige campaignId zu finden, bevor du updateCampaign verwendest, oder describe/listAutomationFlows, bevor du einen Flow erstellst.
Gute Eingaben erstellen
--input akzeptiert einen JSON-String (oder --input-file <path> für größere Payloads). Erstelle ihn aus dem Schema, das du über describe erhalten hast. Wenn ein Werkzeug auf eine andere Entität anhand ihrer ID verweist (eine Kampagnen-ID, Standort-ID, Flow-ID), suche diese ID zuerst mit dem entsprechenden Listen-/Lesewerkzeug nach, anstatt sie zu erfinden.
Für die domänenspezifische Bedeutung von Feldern – wie Automatisierungen verketten, was ein Funnel-Bildschirm enthält, wie Angebote strukturiert sind – konsultiere die Anleitung in references/domains.md, wenn das Schema allein nicht ausreicht.
Arbeitsabläufe
Viele Aufgaben bestehen aus mehreren Schritten und haben eine erforderliche Reihenfolge, die die App normalerweise erzwingt. Die wichtigste Regel: Automatisierungen leben innerhalb von Flows – finde immer einen Flow (listAutomationFlows) oder erstelle einen (createAutomationFlow), bevor du Automatisierungen hinzufügst; erstelle niemals eine verwaiste Automatisierung. Das gleiche „Eltern-IDs zuerst auflösen, dann handeln“-Muster wiederholt sich bei Kampagnen, Funnels und Angeboten.
Lies die Workflow-Datei für jede Aufgabe, bevor du sie ausführst. Jede enthält die erforderliche Aufruf-Reihenfolge und die Domänenregeln, die das Ergebnis gut und nicht nur gültig machen – keines davon steht in den Werkzeugschemas. Lies sie zuerst; rekonstruiere die Abfolge nicht aus den Werkzeugbeschreibungen.
| Um dies zu tun | Lies |
|---|---|
| Erstellen, Klonen oder Konfigurieren einer Kampagne; Angebote im Strategie-Backlog | references/workflows/campaigns.md |
| Alles, was Automatisierungen betrifft – Erstellen, Bearbeiten, Simulieren, Veröffentlichen eines Entwurfs | references/workflows/automations.md |
| Bearbeiten von Funnel-Bildschirmen, Anwenden einer Funnel-Vorlage, Staging eines neuen Bildschirms | references/workflows/funnels.md |
| Verfassen von Meta-Anzeigentexten – für Gäste oder zur Creator-Rekrutierung | references/workflows/facebook.md |
| Creator-Sourcing – Genehmigen von Bewerbern, Prüfen ihrer Inhalte, Gespräche | references/workflows/creators.md |
| Mitgliederprogramm-Belohnungen; Lesen oder Speichern der Wallet-Pass-Konfiguration | references/workflows/members-program.md |
| Arbeiten mit dem Onboarding-Taskboard; Markenidentität | references/workflows/onboarding.md |
| Suchen von Gästen/Mitgliedern und deren Aktivität | references/workflows/guests.md |
Lies mehr als eine, wenn eine Aufgabe mehrere Bereiche umfasst – eine neue Kampagne bedeutet normalerweise campaigns.md plus automations.md und funnels.md.
Einige Dinge sind bewusst nicht verfügbar: Antworten an einen Gast oder Creator per SMS, Auslösen einer Automatisierung bei einem aktiven Mitglied, Aktualisieren/Löschen von Belohnungen, Generieren von Pass-Bildern und der größte Teil der Creator-Pipeline außerhalb der beiden Genehmigungsentscheidungen. Die Workflow-Dateien sagen, welche. Erfinde keinen Aufruf für einen Arbeitsablauf, dessen Werkzeuge nicht von feast tools aufgelistet werden – teile dem Benutzer mit, dass dieser Teil noch nicht verfügbar ist.
Verlinke, was du berührt hast
Die Arbeit, die du über die CLI erledigst, landet irgendwo im Produkt, und ein Link ist eine einfache Sache, die man anbieten kann – also biete sie großzügig an. Beende eine Runde, in der du etwas erstellt, geändert oder veröffentlicht hast, mit einer kurzen Markdown-Liste: wo es zu sehen ist, wo es zu bearbeiten ist, wo es in der Vorschau zu sehen ist. Nicht, weil jemand deine Arbeit überprüfen müsste, sondern weil das Öffnen des Objekts normalerweise der nächste Schritt ist. Wenn jemand fragt, wo etwas ist oder wie man es einrichtet, leite mit dem Link ein, anstatt mit Schritt-für-Schritt-Anleitungen.
Du kennst diese URLs nicht – lies references/links.md, bevor du eine schreibst. Die Form des Dashboards ist nicht die, die du aus den gastorientierten Links an anderer Stelle in dieser Fähigkeit extrapolieren würdest. Eine URL, die offensichtlich richtig aussieht, ist genau der Fall, den du überprüfen solltest. Ein falscher Link ist schlimmer als kein Link: Er wirkt autoritativ und führt zu einem 404.
Diese Datei enthält die Dashboard-Routen mit ihren Panel- und Tab-Namen, die gastorientierten Seiten auf der eigenen Subdomain der Organisation, die Vorschau-Route, die den Funnel-Entwurfszyklus abschließt, und welche Abfrageparameter tatsächlich Analysen unterdrücken, anstatt einen Besuch nur als Vorschau zu markieren.
Ausgearbeitetes Beispiel
Benutzer: „Füge ein 5 $-Rabatt-Angebot zum Plum-Standort in meiner Plum-Vietnamesen-Organisation hinzu.“
feast whoami # finde die Plum-Vietnamesen-Organisations-ID
feast describe dfyCreateOffer # lerne die Angebots-Eingabeform
feast call dfyGetMenuHierarchy --org <orgId> --input '{"locationId":"<id>"}' # finde die Standort-/Menü-IDs
feast call dfyCreateOffer --org <orgId> --input '{ ... }' # erstelle es (bestätigt zuerst)
Das Muster verallgemeinert sich: Identifiziere die Organisation, lerne das Werkzeug, löse alle referenzierten IDs auf, dann handle.
Wenn etwas fehlschlägt
- „Nicht eingeloggt / Sitzung abgelaufen“ →
feast login(oderfeast login --password [username]in einem headless/CI-Kontext). - „Sie gehören zu mehreren Organisationen“ → wähle eine mit
--org, verwendefeast whoami, um die ID zu erhalten. - „Eingabe entspricht nicht dem Werkzeugschema“ → lies
feast describe <tool>erneut und korrigiere die genannten Felder. - Ein erwartetes Werkzeug wird nicht von
feast toolsaufgelistet → es ist möglicherweise noch nicht verfügbar; erfinde keinen Aufruf, informiere den Benutzer.