Aller au contenu

Écrire une commande personnalisée

Poser un fichier de commande dans votre configuration, et l'invoquer par son nom dans l'IDE comme au terminal.

Une commande est un fichier qui porte un prompt que vous retapez sinon plusieurs fois par jour : relire un diff, préparer une revue, résumer un fichier.

Le texte d’une commande devient votre consigne au moment où vous l’invoquez. Le fichier vit donc dans votre configuration personnelle : la consigne du développeur est la seule source de contrôle d’une session (livre blanc sécurité V3, section 5.2).

Créez un fichier .prompt dans le dossier prompts de votre configuration personnelle, ~/.lemniscate/prompts/. Le champ name du front-matter donne le nom de la commande ; à défaut, c’est le nom du fichier sans son extension .prompt :

---
name: revue
description: Relire un fichier en visant un objectif
---
Relis $1 en visant $2. Signale ce qui casserait en production.

Elle s’invoque /revue dans l’IDE comme au terminal, sur tous vos dépôts.

Ce que vous écrivez après le nom de la commande devient ses arguments :

Ce que vous écrivez dans le fichierCe que ça devient
$1, $2, $3…l’argument de ce rang
$ARGUMENTStout ce que vous avez tapé
$$un dollar littéral, pour écrire un montant

/revue src/parser.ts lisibilité donne : « Relis src/parser.ts en visant lisibilité. »

Si le fichier ne contient aucun marqueur, ce que vous tapez est ajouté à la fin du prompt.

Un @ suivi d’un chemin désigne un fichier du dépôt ouvert, dont le contenu est joint à la demande. Le chemin part de la racine du dépôt, pas du répertoire d’où vous lancez la commande :

Compare @src/parser.ts à ce que décrit @docs/format.md.

Le contenu ainsi joint reste un contenu lu dans le dépôt : il est marqué comme non fiable et présenté au modèle dans une zone distincte de votre consigne (livre blanc sécurité V3, section 5.2).

Une commande peut demander plus que ce dont dispose la surface où vous l’invoquez. Dans ce cas la commande ne part pas, et le refus nomme ce qui manque. Le modèle ne reçoit pas de prompt amputé.

Ce que le fichier demandeDans l’IDEAu terminal
@un/fichier.ts du dépôtouioui
@problems, @openouirefus : ce sont des capacités d’une fenêtre d’éditeur
L’ancienne syntaxe à accolades ({{{ input }}}, version: 1)ouirefus : le terminal ne porte pas ce moteur

Un fichier hors du dépôt est refusé des deux côtés : l’agent ne voit que la copie de travail du dépôt ouvert (livre blanc sécurité V3, section 4.3).

Les commandes viennent du dossier prompts de votre configuration personnelle. Une commande intégrée (/help, /exit) garde son nom : déposer un fichier ne la remplace pas.

Un dossier .lemniscate/prompts/ présent dans un dépôt fait partie de la copie de travail. Son contenu est une donnée que l’agent peut lire, marquée comme non fiable ; il ne fournit pas de commandes. Pour reprendre une commande qu’une équipe y a écrite, relisez le fichier et copiez-le dans votre dossier personnel.

Une commande n’est pas une consigne permanente : son fichier n’atteint le modèle que lorsque vous tapez son nom, et n’est pas joint à vos autres demandes. Pour une consigne suivie à chaque fois, voyez Écrire des règles pour l’agent.

Votre dossier de règles personnel porte les consignes permanentes, et il ne fournit pas de commandes, sauf, dans l’IDE, pour un fichier qui le demande avec invokable: true dans son front-matter.