Einen Command anlegen
Ein Command ist eine Promptvorlage, kein eigener Agent und keine Berechtigungsrolle. Voraussetzung: ein geöffnetes Projekt und eine CLI-Sitzung. Legen Sie im Projekt .lurus/commands/review-code.md an:
---
description: Review the requested code without changing files
argumentHint: <file or module>
---
Review $ARGUMENTS for correctness and test coverage. Explain concrete findings with file references. Do not change files.
Starten Sie die CLI nach dem Anlegen neu und prüfen Sie:
/commands
/review-code src/example.ts
/commands zeigt Key, Beschreibung, Argumenthinweis und Quelle. Der zweite Aufruf expandiert die Vorlage und übergibt dem Elternagenten einen Reviewauftrag. Die Anweisung „Do not change files“ ist keine technische Schreibsperre: Für einen technisch begrenzten Review verwenden Sie den Ask-Modus oder einen Custom Agent.
Global gilt dieselbe Datei unter ~/.lurus/commands/review-code.md für alle Projekte. Global wird zuerst geladen; ein gleichnamiger Projektcommand überschreibt ihn. review ist bereits ein Built-in – deshalb heißt das Beispiel ausdrücklich review-code.
Frontmatter vollständig erklärt
| Feld | Beispiel | Wirkung |
|---|---|---|
description | Review requested code | Beschreibung in der Liste. |
argumentHint | <file or module> | Bedienhinweis, keine Argumentvalidierung. |
allowedTools | [Read, Grep] | Begrenzt die im Chat verfügbaren Werkzeuge nicht. Verwenden Sie das Feld nicht als Sandbox. |
model | Eine Auswahl aus /model | Ändert das Modell des Hauptagenten für die laufende Sitzung. Keine automatische Rücksetzung nach dem Befehl und keine globale Speicherung. |
disableModelInvocation | true | Zeigt die expandierte Vorlage statt des abschließenden Modellaufrufs. Eine enthaltene Shellstelle und eine Modelländerung können bereits vorher wirken. |
Der Parser normalisiert camelCase, kebab-case und snake_case dieser Felder. mode und isolation sind keine unterstützten Commandfelder. Halten Sie Frontmatter klein; insbesondere allowedTools ersetzt nicht das Berechtigungssystem.
Argumente und Namespaces
$ARGUMENTS: die gesamte Argumentzeichenfolge nach dem Command.$1bis$9: positionsweise Werte; fehlende Positionen werden leer.- Die Positionswerte werden anhand von Whitespace erneut zerlegt, nicht shellquote-aware. Eine Zeichenfolge in Anführungszeichen ist deshalb nicht zuverlässig ein Positionsargument.
.lurus/commands/quality/review-code.mdwird zu/quality:review-code. Pfad und Dateiname bestimmen den kleingeschriebenen Key, nicht ein Anzeigename.
Fortgeschrittenes Beispiel .lurus/commands/quality/compare.md:
---
description: Compare two modules
argumentHint: <first-path> <second-path>
---
Compare $1 and $2. Explain differences in behavior and tests.
Full request: $ARGUMENTS
/quality:compare src/old.ts src/new.ts
Erwartung: Beide Pfade stehen im expandierten Prompt. Das ist Textsubstitution, kein garantierter Dateiimport und keine Shellargumentübergabe.
Shell-Ausgabe in Vorlagen
Achtung: Enthaltene Shellbefehle werden vor der Modellantwort ausgeführt und können reale Nebenwirkungen haben. disableModelInvocation: true ist dafür kein Probelauf. Verwenden Sie nur vertrauenswürdige feste Befehle und interpolieren Sie niemals Nutzereingaben.
Beispiel .lurus/commands/status-review.md:
---
description: Review the current working-tree status
---
Current status:
!`git status --short`
Explain which areas need review. Do not modify files.
Bei einer Projektquelle fragt die CLI nach der Ausführung. „Once“ gilt für diesen Aufruf; „Always“ ist hier eine in-memory, namensgebundene Freigabe, kein dauerhaft hashgebundener Trusteintrag. Globale Commandquellen überspringen diese Projektabfrage. Verwenden Sie globale Shellvorlagen nur aus bewusst vertrauenswürdigen Quellen.
Nutzereingaben niemals in Shellstellen interpolieren. Verwenden Sie $ARGUMENTS im normalen Prompttext, nicht als Shellcode. disableModelInvocation: true ist kein Dry-run der Shellvorlage. Auch Shellausführung bleibt eine reale Prozessaktion mit möglichen Nebenwirkungen.
Laden, Kollisionen und Fehlersuche
/commands hat keine create, reload oder remove-Unterkommandos; zusätzliche Argumente werden nicht als Verwaltungsaktionen ausgeführt. Bearbeiten Sie Dateien manuell und starten Sie für sicheres Neuladen eine neue CLI-Sitzung.
| Problem | Prüfung |
|---|---|
| Command fehlt | .md-Datei unter dem richtigen Projekt-CWD? Neustart? Key aus Pfad statt Beschreibung verwendet? |
| Built-in läuft statt Vorlage | Reservierte Namen wie review vermeiden; Kollisionen werden übersprungen. |
| Globaler Inhalt erscheint nicht | Projektdatei mit gleichem Key überschreibt die globale Quelle. |
| Argument falsch zerlegt | Whitespace-Zerlegung beachten; für freien Text $ARGUMENTS statt Positionswerte verwenden. |
Agent darf trotz allowedTools mehr | Dieses Feld begrenzt die Werkzeuge nicht. Verwenden Sie Modus, Berechtigungen oder eine eigene Agentrolle. |
| Modell bleibt geändert | Das model-Feld ist nicht temporär; anschließend /model prüfen. |
Weiter: Agenten, Skills, vollständige Referenz.