Zum Hauptinhalt springen

bea ask mit Skills erweitern

Bringen Sie bea ask Ihre eigenen Buchhaltungskonventionen mit einer SKILL.md-Datei bei: wo ein Skill lebt, welche Kopie gewinnt, was das Frontmatter enthalten muss und wie Sie nachweisen, dass der Skill geladen wurde.

Legen Sie eine SKILL.md-Datei neben Ihr Ledger und bea ask folgt Ihren eigenen Buchhaltungskonventionen – Ihren Kategorienamen, Ihrem Berichtslayout, Ihren Hausregeln – ohne dass Sie sie bei jeder Frage wiederholen müssen.

Ein Skill ist einfaches Markdown mit einem kleinen YAML-Header. bea ask findet ihn beim Start und bietet ihn dem gehosteten Assistenten an, der den vollständigen Text lädt, wenn eine Frage danach verlangt.

Diese Seite setzt voraus, dass bea ask bei Ihnen bereits funktioniert. Sie benötigt das ask-Extra (uv tool install 'beancount-io[ask]') und Beancount.io-Anmeldedaten von bea cloud login oder BEA_TOKEN. Abfragen werden gegen Ihr lokales Ledger ausgeführt, aber die Frage und der Skill-Kontext gehen an den gehosteten Beancount.io-KI-Dienst. bea ask hat keine JSON-Ausgabe. Siehe die CLI-Referenz für den vollständigen Befehlsvertrag.

Wo ein Skill lebt

bea ask liest zwei Verzeichnisse in dieser Reihenfolge:

SpeicherortGeltungsbereich
<Ledger-Verzeichnis>/.agents/skills/Projektebene – ein Ledger, und normalerweise in dessen Repository eingecheckt
~/.config/bea/skills/Benutzerebene – jedes Ledger, das Sie auf diesem Rechner öffnen

Das Projektverzeichnis wird aus dem Arbeitsverzeichnis aufgelöst, in dem Sie bea ask ausführen, nicht aus --file. Wenn beide Verzeichnisse einen Skill mit demselben name enthalten, gewinnt die Projektkopie und die Benutzerkopie wird ignoriert.

BEA_CONFIG_DIR verschiebt das Verzeichnis auf Benutzerebene: Wenn Sie es setzen, werden Skills aus $BEA_CONFIG_DIR/skills/ gelesen. Andernfalls gilt $XDG_CONFIG_HOME/bea/skills/ mit Rückfall auf ~/.config/bea/skills/.

Die Skill-Datei schreiben

Ein Verzeichnis pro Skill, das eine Datei namens SKILL.md enthält:

.agents/skills/
└── monthly-report/
    └── SKILL.md

Die Datei besteht aus einem YAML-Header, gefolgt von Ihren Anweisungen:

---
name: monthly-report
description: Generates monthly expense summaries grouped by category.
---
 
When the user asks for a spending summary or monthly report:
1. Group all expenses by the top-level account category.
2. Show totals for each category, sorted highest to lowest.
3. Include a grand total at the end.
4. Always specify the currency next to each amount.

Zwei Felder sind erforderlich. Eine Datei, bei der eines fehlt, wird stillschweigend übersprungen, daher ist ein fehlender Skill normalerweise ein Header-Problem.

FeldErforderlichZweck
namejaKleinbuchstaben und Bindestriche. Halten Sie ihn gleich dem Verzeichnisnamen – die Rangfolge zwischen den beiden Speicherorten wird anhand dieses Werts abgeglichen, sodass eine Abweichung Overrides schwer vorhersehbar macht.
descriptionjaEine Zeile, die dem Assistenten sagt, wann der Skill angewendet werden soll. Es ist das, was der Assistent sieht, bevor er entscheidet, den Textkörper zu laden.
licenseneinFreitext, wird mit dem Skill aufgezeichnet.
compatibilityneinFreitext, wird mit dem Skill aufgezeichnet.
metadataneinEine Schlüssel-Wert-Zuordnung, wird mit dem Skill aufgezeichnet.
allowed-toolsneinEine durch Leerzeichen getrennte Liste, wird geparst und aufgezeichnet.

Schreiben Sie den Textkörper als Anweisungen an einen Kollegen: was zu tun ist, in welcher Reihenfolge, und wie das Ergebnis zu präsentieren ist. Beschränken Sie ihn auf die Konventionen, die wirklich Ihre eigenen sind. Fakten, die der Assistent aus Ihrem Ledger lesen kann, gehören nicht in einen Skill.

allowed-tools ist keine Berechtigungsgrenze. bea 0.1.0 parst das Feld und sonst liest es nichts, also schränkt es nichts ein. Behandeln Sie es als Dokumentation der Absicht. Die Kontrollen, die tatsächlich gelten, sind die im Befehl selbst: Interaktive Schreibvorgänge werden in der Vorschau angezeigt, bestätigt und validiert, bevor sie die Datei berühren, globales --yes gewährt keine Schreibberechtigung, und der --print-Modus wendet einen vorgeschlagenen Schreibvorgang nie an.

Prüfen, dass es geladen wurde

Geben Sie einem Wegwerf-Skill eine Anweisung, die Sie nicht übersehen können, und stellen Sie dann irgendeine Frage.

Erstellen Sie den Skill:

mkdir -p .agents/skills/test-skill
cat > .agents/skills/test-skill/SKILL.md << 'EOF'
---
name: test-skill
description: Test skill to verify skill loading works.
---
 
IMPORTANT: Whenever the user asks any question, start your response with the exact phrase "SKILL LOADED".
EOF

Stellen Sie eine Frage im Ein-Antwort-Modus:

bea ask "what accounts do I have?" --print

Eine Antwort, die mit SKILL LOADED beginnt, bedeutet, dass der Skill gefunden und dem Assistenten angeboten wurde.

Beweisen Sie dann, dass die Phrase aus dem Skill stammt, indem Sie das Verzeichnis aus dem Skill-Baum verschieben und erneut fragen:

mv .agents/skills/test-skill ./test-skill.off
bea ask "what accounts do I have?" --print
mv ./test-skill.off .agents/skills/test-skill

Die Phrase sollte verschwunden sein. Verschieben Sie das Verzeichnis aus .agents/skills/ heraus, anstatt es an Ort und Stelle umzubenennen: Die Erkennung basiert auf dem name-Feld im Header, sodass ein in test-skill.bak umbenanntes Verzeichnis weiterhin gefunden und geladen wird.

Um einen Skill auf Benutzerebene zu prüfen, legen Sie dieselbe Datei unter ~/.config/bea/skills/test-skill/SKILL.md ab und wiederholen Sie den Vorgang. Um die Rangfolge zu prüfen, behalten Sie beide Kopien mit demselben name und geben Sie ihnen verschiedene Phrasen: Die Projektphrase ist die, die Sie sehen sollten.

Räumen Sie den Test-Skill auf, wenn Sie fertig sind. Er gilt für jede Frage, die Sie aus diesem Verzeichnis stellen.

Skills für bea ask sind nicht Skills für Ihren Agenten

Diese Skills erweitern nur den eingebauten bea ask-Helfer. Sie sind etwas anderes als die kanonischen Beancount.io-Skills, die Sie in einen externen Codierungsagenten wie Claude Code oder Codex installieren, die bea-Befehle von außen steuern. Wenn Sie das suchen, lesen Sie stattdessen Buchhaltung mit KI-Agenten – es behandelt die Rezepte für externe Agenten von Anfang bis Ende, und keines davon benötigt das ask-Extra oder ein gehostetes Konto.

Quelle: https://beancount.io/de/docs/Solutions/bea-ask-skills