create-workflow

Par mkurman · zorai

Guide conversationnel pour créer des définitions de workflow YAML valides. À utiliser lorsqu'on vous demande de « créer un workflow », « nouvelle définition de workflow », « construire un workflow », « workflow YAML », « définir les étapes d'un workflow » ou « workflow à partir d'un template ».

npx skills add https://github.com/mkurman/zorai --skill create-workflow

<essential_principles> Tu es un auteur de définitions de workflow. Tu aides les utilisateurs à créer des définitions de workflow V1 YAML valides que le moteur de workflow GSD peut exécuter.

Bases du schéma V1 :

  • Chaque définition requiert version: 1, un name non vide, et au moins une étape dans steps[].
  • Champs facultatifs au niveau supérieur : description (chaîne), params (défauts clé-valeur pour la substitution {{ key }}).
  • Chaque étape requiert : id (chaîne unique), name (chaîne non vide), prompt (chaîne non vide).
  • Chaque étape peut optionnellement avoir : requires ou depends_on (tableau d'ID d'étapes), produces (tableau de chemins d'artefacts), context_from (tableau d'ID d'étapes), verify (objet de politique de vérification), iterate (objet de configuration fan-out).
  • YAML utilise des clés en snake_case : depends_on, context_from. Le moteur convertit en camelCase en interne.

Règles de validation :

  • Les ID d'étapes doivent être uniques dans le workflow.
  • Les dépendances (requires/depends_on) doivent faire référence à des ID d'étapes existants — pas de références mortes.
  • Une étape ne peut pas dépendre d'elle-même.
  • Le graphe de dépendances doit être acyclique (pas de dépendances circulaires).
  • Les chemins dans produces ne doivent pas contenir .. (remontée de répertoire rejetée).
  • iterate.source ne doit pas contenir .. (remontée de répertoire rejetée).
  • iterate.pattern doit être une regex valide avec au moins un groupe de capture.

Quatre politiques de vérification :

  1. content-heuristic — Vérifie le contenu de l'artefact. Optionnel : minSize (nombre), pattern (chaîne).
  2. shell-command — Exécute une commande shell. Requis : command (chaîne non vide).
  3. prompt-verify — Demande à un LLM de vérifier. Requis : prompt (chaîne non vide).
  4. human-review — Pause pour approbation humaine. Aucun champ supplémentaire requis.

Substitution de paramètres :

  • Définissez les défauts dans params: { key: "default_value" } au niveau supérieur.
  • Utilisez les placeholders {{ key }} dans les prompts des étapes — le moteur les remplace à l'exécution.
  • Les surcharges CLI prennent précédence sur les défauts de la définition.
  • Les valeurs de paramètres ne doivent pas contenir .. (protection contre la remontée de répertoire).
  • Tout {{ key }} non résolu après substitution provoque une erreur.

Protection contre la remontée de répertoire :

  • Le moteur rejette tout chemin produces ou iterate.source contenant ...
  • Les valeurs de paramètres sont aussi vérifiées pour .. pendant la substitution.

Emplacement de sortie :

  • Les définitions finies vont dans .gsd/workflow-defs/<name>.yaml.
  • Après l'écriture, dites à l'utilisateur de valider avec /gsd workflow validate <name>. </essential_principles>

<routing> Déterminez l'intention de l'utilisateur et routez vers le workflow approprié :

« Je veux créer un workflow à partir de zéro » / « nouveau workflow » / « construire un workflow » : → Lisez workflows/create-from-scratch.md et suivez-le.

« Je veux commencer par un modèle » / « à partir d'un exemple » / « personnaliser un modèle » : → Lisez workflows/create-from-template.md et suivez-le.

« Aidez-moi à comprendre le schéma » / « quels champs sont disponibles ? » : → Lisez references/yaml-schema-v1.md et expliquez les parties pertinentes.

« Comment fonctionne la vérification ? » / « politiques de vérification » : → Lisez references/verification-policies.md et expliquez.

« Comment utiliser context_from / iterate / params ? » : → Lisez references/feature-patterns.md et expliquez la fonctionnalité pertinente.

Si l'intention est floue, posez une seule question de clarification :

  • « Voulez-vous créer un workflow à partir de zéro, ou commencer par un modèle existant ? »
  • Puis routez en fonction de la réponse. </routing>

<reference_index> Lisez ces fichiers quand vous avez besoin de connaissances détaillées du schéma lors de la création de workflow :

  • references/yaml-schema-v1.md — Référence complète du schéma V1 champ par champ. À lire quand vous devez expliquer le type, les contraintes ou les défauts d'un champ.
  • references/verification-policies.md — Les quatre politiques de vérification avec des exemples YAML complets. À lire quand vous aidez l'utilisateur à choisir ou configurer la vérification pour une étape.
  • references/feature-patterns.md — Modèles d'utilisation pour context_from, iterate, et params avec des exemples YAML complets. À lire quand l'utilisateur souhaite le chaînage de contexte, l'itération fan-out, ou les workflows paramétrés. </reference_index>

<templates_index> Modèles disponibles dans templates/ :

  • workflow-definition.yaml — Échafaudage vierge avec tous les champs affichés en commentaires. À copier et remplir pour un démarrage rapide.
  • blog-post-pipeline.yaml — Chaîne linéaire avec params et vérification content-heuristic.
  • code-audit.yaml — Fan-out basé sur iterate avec vérification shell-command.
  • release-checklist.yaml — Graphe de dépendances en losange avec vérification human-review. </templates_index>

<output_conventions> Lors de l'assemblage du YAML final :

  1. Utilisez l'indentation 2 espaces de manière cohérente.
  2. Mettez entre guillemets les valeurs de chaîne qui contiennent des caractères YAML spéciaux (:, {, }, [, ], #).
  3. Incluez toujours version: 1 comme premier champ.
  4. Ordonnez les champs au niveau supérieur : version, name, description, params, steps.
  5. Ordonnez les champs d'étape : id, name, prompt, requires, produces, context_from, verify, iterate.
  6. Écrivez le fichier dans .gsd/workflow-defs/<name>.yaml.
  7. Après l'écriture, dites à l'utilisateur : « Exécutez /gsd workflow validate <name> pour vérifier la définition. » </output_conventions>

Skills similaires