Regeln schreiben
Apothem-Verhaltensregeln verfassen, deren Geltungsbereich festlegen und pflegen.
Regeln sind Markdown-Dateien in src/apothem/rules/ mit der Endung .md.
Regel-Frontmatter
---
name: "..."
description: "..."
pathFilter: "" # empty string for always-on; a glob for path-filtered
alwaysApply: true # true for always-on; false for path-filtered
---Regel-Geltungsbereiche
Der Geltungsbereich einer Regel wird durch zwei Frontmatter-Felder gesetzt, alwaysApply und pathFilter:
alwaysApply | pathFilter | Wann angewendet |
|---|---|---|
true | "" (leer) | Immer aktiv: jede Sitzung, jede Datei |
false | ein Glob wie "**/*.py" | Pfadgefiltert: nur wenn die aktive Datei dem Glob entspricht |
Fünf mitgelieferte Regeln sind immer aktiv: agnostic-posture, authority-inquiry,
session-closure, context-management und der Regelindex. Eine immer aktive Regel
kostet in jeder Sitzung Kontext, daher SOLLTE eine neue Regel pfadgefiltert sein,
mit Globs, die die Dateien benennen, die sie regelt; ein Filter aus ** allein
schränkt nichts ein, und Claude Code lädt eine solche Regel beim Start wie eine
immer aktive. Der mitgelieferte Korpus begrenzt die immer aktive Menge auf diese
Liste und auf eine Byte-Obergrenze; eine Regel, die zu „immer aktiv“ hochgestuft
wird, ändert beides in derselben Änderung. Nenne jede Regel, die du hinzufügst, im
Regelindex (apothem-rule-index), damit eine Sitzung auf einem Harness, der Regeln
nicht nach Pfad eingrenzt, sie trotzdem findet. Eine Begleitregel
(<parent>-<aspect>) übernimmt den pathFilter ihrer übergeordneten Regel oder
einen engeren, sodass sie nie ohne ihre übergeordnete Regel geladen wird. Gib einer
eigenen Regel nicht den Namen apothem-rule-index: Eine Installation sichert eine
Regeldatei mit diesem Namen und überschreibt sie.
Beispielregel
---
name: "python-conventions"
description: "Python style conventions for this project"
pathFilter: "**/*.py"
alwaysApply: false
---
# Python conventions
- Use type annotations on all public functions.
- Maximum line length: 88 characters.
- Prefer explicit over implicit.Regeln auf Harnesses anwenden
Nachdem du eine Regel geschrieben hast, aktualisiere jeden installierten Harness-Adapter. Führe apothem harnesses list aus, um den installierten Satz zu sehen, und rufe dann update einmal pro Harness auf:
apothem update --harness claude-code
apothem update --harness cursor --project /path/to/projectEin projektbezogener Harness braucht beim Update --project, wie in der zweiten
Zeile; ein benutzerbezogener Harness nicht.
Regelvalidierung
Führe den Frontmatter-Validator gegen die Regeldatei aus, die du geschrieben hast.
Aus einem Apothem-Checkout macht PYTHONPATH=src das Paket importierbar; nach
einer Skript-Installation verwende stattdessen PYTHONPATH="$HOME/.apothem/src".
PYTHONPATH=src python -m apothem.conformity.gate --check frontmatter-grep src/apothem/rules/<rule>.mdEine Prüfung pro Schreibvorgang wie frontmatter-grep nimmt die zu prüfende Datei
entgegen oder --stdin, um den Inhalt von der Standardeingabe zu lesen; ohne
beides wartet sie auf Eingaben über die Standardeingabe. Eine eigenständige
Prüfung nimmt stattdessen ein Stammverzeichnis entgegen, wie in
--check naming-grep ..