Zum Inhalt springen

Handbuch

Eigene Befehle

Wiederverwendbare Slash-Commands als Markdown anlegen, Argumente einsetzen und Shell-Ausführung bewusst begrenzen.

Geprüfter CLI-Quellstand: 2.4.0 · Redaktionell aktualisiert:

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

FeldBeispielWirkung
descriptionReview requested codeBeschreibung 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.
modelEine Auswahl aus /modelÄndert das Modell des Hauptagenten für die laufende Sitzung. Keine automatische Rücksetzung nach dem Befehl und keine globale Speicherung.
disableModelInvocationtrueZeigt 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.
  • $1 bis $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.md wird 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.

ProblemPrüfung
Command fehlt.md-Datei unter dem richtigen Projekt-CWD? Neustart? Key aus Pfad statt Beschreibung verwendet?
Built-in läuft statt VorlageReservierte Namen wie review vermeiden; Kollisionen werden übersprungen.
Globaler Inhalt erscheint nichtProjektdatei mit gleichem Key überschreibt die globale Quelle.
Argument falsch zerlegtWhitespace-Zerlegung beachten; für freien Text $ARGUMENTS statt Positionswerte verwenden.
Agent darf trotz allowedTools mehrDieses Feld begrenzt die Werkzeuge nicht. Verwenden Sie Modus, Berechtigungen oder eine eigene Agentrolle.
Modell bleibt geändertDas model-Feld ist nicht temporär; anschließend /model prüfen.

Weiter: Agenten, Skills, vollständige Referenz.

Eine bewusste Entscheidung

Vor dem ersten Prompt.

Interaktive Demo
Lurus Codeprivacy-demo · beispielhafter Workspace

Demo-Sitzung bereit. Modellwahl und Datenweg sind getrennte Entscheidungen.

Inszeniertes Beispiel. Keine echte Anmeldung, Sicherheitsprüfung oder Codeübertragung.

Bildvorschau