Aller au contenu
Tous les outils

recipe_save

Skills et recettes · macOS · Windows

Effet: écriture. État: disponibilité conditionnelle.

«Disponibilité conditionnelle» signifie que l’outil peut dépendre de la version, de la plateforme, des autorisations, du compte ou de la configuration. Il n’est pas forcément actif partout.

macOS

Objectif

Enregistre une COMPÉTENCE (SKILL) réutilisable — une recette nommée (une séquence ordonnée d’appels d’outils LMCP avec des paramètres) — sur ce Mac pour que l’utilisateur puisse la relancer à tout moment avec recipe_run. Un utilisateur en enregistrerait une pour transformer un flux de travail LMCP à plusieurs étapes qu’il répète (un point du matin, le tri de la boîte de réception, un rapport hebdomadaire, une extraction de données) en une seule commande réutilisable. Les compétences enregistrées peuvent être partagées avec d’autres personnes via recipe_export. Le manifeste doit avoir un name et un tableau steps non vide. Une étape ne peut pas se confirmer elle-même : `confirm` dans les args d’une étape est retiré à l’enregistrement (confirm_removed_steps indique combien d’étapes en avaient un) et ignoré à l’exécution, de sorte qu’une étape dont l’outil demande une confirmation répond par son aperçu au lieu de s’exécuter. Un nom qui est déjà une recette est refusé avec recipe_exists et rien n’est écrit ; passez overwrite: true pour la remplacer. Renvoie {name}.

Entrées requises

Les noms restent exactement ceux exigés par l’outil. Les définitions techniques canoniques en anglais figurent dans le schéma dépliable ci-dessous.

Autorisations et confirmation

Le schéma ne déclare aucun paramètre de confirmation explicite. Cela n’autorise aucune action sans permission : vérifiez l’effet et obtenez une autorisation.

Schéma technique canonique en anglais — macOS
{
  "properties": {
    "manifest": {
      "description": "The recipe manifest. Shape: {\"name\": string (required), \"description\": string, \"params\": [{\"name\": string, \"type\": \"string\"|\"int\"|\"bool\", \"default\": any}], \"steps\": [ ... ] (required, non-empty), \"outputs\": [{\"kind\": string}]}. A step is EITHER a tool call {\"tool\": <tool_name>, \"args\": {...}} OR a pause {\"wait\": {\"seconds\": N}} (also {\"wait\": N}). A tool-call step may add \"optional\": true (a boolean; default false): if it fails, recipe_run records {ok:false, error} for it, lists it in skipped_optional and carries on with the next step, instead of stopping — use it for a source the user may not have (an app, a permission). Any arg string may interpolate a declared param with ${name} (e.g. \"limit\": \"${count}\"); an arg that is exactly \"${name}\" keeps the param's type. Steps run in order; a later step can consume an EARLIER step's output with \"${steps[N].result.KEY}\" (0-based; supports .key and [i], e.g. \"account\": \"${steps[0].result.accounts[0].name}\"). A step cannot confirm itself: do not put `confirm` in a step's args (it is removed when saving and ignored when running). recipe_run asks for one confirmation when the recipe has state-changing steps; a step whose tool asks for its own confirmation then answers with its preview and is not executed. A step that names a note should give note_name (the note's title): a note_id only names the note on the Mac that issued it, so a step that gives both is saved with note_name alone.",
      "type": "object"
    },
    "overwrite": {
      "description": "Must be true to replace a recipe that already has this name. Without it, a taken name is refused with recipe_exists and the existing recipe is left as it was.",
      "type": "boolean"
    }
  },
  "required": [
    "manifest"
  ],
  "type": "object"
}

Exemple documentaire

Exemple de documentation pour recipe_save. N’exécutez pas cet exemple. Les arguments présentés appartiennent à un jeu de données fictif ; résolvez les identifiants réels et obtenez une autorisation avant tout appel réel.

{
  "manifest": {
    "description": "Read the local date and time.",
    "name": "Demo morning brief",
    "steps": [
      {
        "args": {},
        "tool": "get_datetime"
      }
    ]
  }
}

Windows

Objectif

Enregistre une COMPÉTENCE (SKILL) réutilisable — une recette nommée (une séquence ordonnée d’appels d’outils LMCP avec des paramètres) — sur cette machine pour que l’utilisateur puisse la relancer à tout moment avec recipe_run. Un utilisateur en enregistrerait une pour transformer un flux de travail LMCP à plusieurs étapes qu’il répète (un point du matin, le tri de la boîte de réception, un rapport hebdomadaire, une extraction de données) en une seule commande réutilisable. Le manifeste doit avoir un name et un tableau steps non vide. Une étape peut ajouter "optional": true (un booléen ; false par défaut) : si elle échoue, recipe_run consigne {ok:false, error} pour elle, la liste dans skipped_optional et passe à l’étape suivante au lieu de s’arrêter — à utiliser pour une source que l’utilisateur peut ne pas avoir (une app, une autorisation). Une chaîne d’arg peut interpoler un param déclaré avec ${name} ; un arg qui vaut exactement "${name}" conserve le type du param. Une étape ultérieure peut consommer la sortie d’une étape précédente avec "${steps[N].result.KEY}" (base 0 ; prend en charge .key et [i]). Une étape ne peut pas se confirmer elle-même : confirm dans les args d’une étape est retiré, donc une étape dont l’outil demande une confirmation (pour envoyer, supprimer, remplacer un fichier, exécuter une commande) renvoie son aperçu. Un nom qui est déjà une recette est refusé avec recipe_exists et rien n’est écrit ; passez overwrite: true pour la remplacer. Renvoie {name, step_count}.

Entrées requises

Les noms restent exactement ceux exigés par l’outil. Les définitions techniques canoniques en anglais figurent dans le schéma dépliable ci-dessous.

Autorisations et confirmation

Le schéma ne déclare aucun paramètre de confirmation explicite. Cela n’autorise aucune action sans permission : vérifiez l’effet et obtenez une autorisation.

Schéma technique canonique en anglais — Windows
{
  "properties": {
    "manifest": {
      "description": "The recipe manifest. Shape: {\"name\": string (required), \"description\": string, \"schema_version\": int, \"params\": [{\"name\": string, \"type\": string, \"default\": any}], \"steps\": [{\"tool\": string, \"args\": object, \"optional\": bool}] (required, non-empty)}.",
      "type": "object"
    },
    "overwrite": {
      "description": "Must be true to replace a recipe that already has this name. Without it, a taken name is refused with recipe_exists and the existing recipe is left as it was.",
      "type": "boolean"
    }
  },
  "required": [
    "manifest"
  ],
  "type": "object"
}

Exemple documentaire

Exemple de documentation pour recipe_save. N’exécutez pas cet exemple. Les arguments présentés appartiennent à un jeu de données fictif ; résolvez les identifiants réels et obtenez une autorisation avant tout appel réel.

{
  "manifest": {
    "description": "Read the local date and time.",
    "name": "Demo morning brief",
    "steps": [
      {
        "args": {},
        "tool": "get_datetime"
      }
    ]
  }
}