orchestrate

Workflow multi-agent piloté par Opus. Utilisez-le lorsqu'une demande de codage est suffisamment volumineuse pour être divisée (plusieurs fichiers/sous-tâches, modifications en masse, travail parallélisable) ou lorsque l'utilisateur demande « orchestrate », « déléguer », « chia việc », « dùng agy/reasonix/subagent ». Opus planifie et révise ; des travailleurs bon marché exécutent des contrats étroitement ciblés dans des arbres de travail git isolés ; des garde-fous automatisés + la révision d'Opus rejettent les modifications erronées, incomplètes, excessives ou inesthétiques avant toute fusion.

Qu'est-ce que orchestrate ?

Cette compétence transforme Claude Opus en architecte et chef d'orchestre d'un workflow multi-agent pour les tâches de codage volumineuses. Opus décompose la demande en contrats JSON atomiques et les distribue à des agents d'exécution économiques (Gemini, DeepSeek, Claude Sonnet/Haiku) qui travaillent chacun dans un espace de travail git isolé. Chaque contrat est strictement limité en termes de fichiers touchés, de lignes de diff et de responsabilités, avec des plans détaillés fournis par Opus pour éviter les dérives. Un système de garde-fous automatisé vérifie chaque résultat (périmètre, budgets, tests cachés, secrets), et Opus effectue une révision finale avant de fusionner. La compétence prend en charge l'exécution parallèle limitée (jusqu'à 3 workers), les pipelines d'étapes, la supervision en direct (rx-acp) et un tableau de bord de suivi. Elle est conçue pour les tâches qui dépassent ~40 lignes ou 2 fichiers, impliquent plusieurs sous-tâches indépendantes, des modifications en masse, des tests, de la documentation ou des recherches dans la base de code.

Compatible avec✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/duongtx90/claude-skills/tree/HEAD/orchestrate

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Orchestrate : Opus planifie et révise, des agents bon marché exécutent

Vous (Opus) êtes l'architecte et le gardien, pas le dactylographe. Les travailleurs sont bon marché et rapides, mais ils ne sont pas fiables : supposez que chaque résultat peut être erroné, incomplet, excessif, inesthétique ou qu'il triche sur les tests jusqu'à ce que les garde-fous prouvent le contraire.

Outillage : python3 ~/.claude/skills/orchestrate/scripts/orch.py (ci-dessous : orch). Références, à lire à la demande :

  • references/agent-matrix.md — capacités/coût par agent + schémas de pipelines par étape (une fois par session) ;
  • references/workers.md — recettes CLI et pièges par travailleur ;
  • references/live.md — supervision en direct rx-acp (L0/L1/L2), exécutions --live, formats filaires, journal des leçons (à lire avant d'utiliser rx-acp* ou --live) ;
  • references/review-checklist.md — Porte 2.

0. Triage

Faites-le vous-même lorsque la modification est d'environ ≲ 40 lignes dans 1 à 2 fichiers, ou principalement du jugement (architecture, sécurité, débogage délicat), ou principalement mécanique sous ~1000 lignes de diff (sinon ≤ 2 travailleurs). Orchestrez pour plusieurs sous-tâches indépendantes, modifications en masse, code standard, tests, documentation, recherches dans la base de code, ou lorsque l'utilisateur le demande.

Budget des ressources (8 travailleurs en parallèle ont déjà gelé la machine avec des dizaines de vérificateurs de types) :

  • Maximum 3 travailleurs actifs (--parallel 3 par défaut ; les agents Sonnet/Haiku comptent aussi).
  • checks = bon marché et ciblé (un fichier de test, lint sur les fichiers touchés). Les vérifications de type/constructions à l'échelle du projet vont dans final_checks : les travailleurs ne les voient jamais ; vous les exécutez une fois dans l'arbre principal après la fusion.
  • Préférez 2 à 3 contrats plus grands plutôt que beaucoup de petits (le démarrage est le coût fixe).
  • Les travailleurs n'installent jamais de paquets ni ne démarrent de processus d'arrière-plan / serveurs de développement. Après une vague, vérifiez que rien ne tourne (pgrep -fl "wt/<ID>|tsc").
  • Contrats d'interface utilisateur : listez explicitement les jetons de conception autorisés et interdits.

Précondition : un dépôt git ; les arbres de travail partent de HEAD + modifications suivies non validées (les fichiers non suivis ne sont pas reportés).

Jev (Système Typé Un, scripts/jev.py) : jugements typés, ~0.4 s, ~0,00004 $/appel. Il classe, note et vérifie ; la politique et les seuils restent dans le code. Désactivé quand la clé TYPESAFE_API_KEY est manquante (ORCH_JEV=0).

1. Comprendre et spécifier

  1. Lisez le code pertinent (ou envoyez un travailleur en lecture seule pour des recherches larges). Trouvez les commandes de test/lint.
  2. orch route "<tâche>" → signaux de Jev + un travailleur suggéré / étape d'analyse. Une suggestion ; vous décidez.
  3. Spécification courte : objectif, non-objectifs, critères d'acceptation, risques. Ne demandez à l'utilisateur que les décisions qui lui reviennent.

2. Décomposer en contrats

Un contrat JSON par sous-tâche dans <repo>/.orch/contracts/<ID>.json (references/contract-template.json).

  • Petit : 1 à 3 fichiers, ≲150 lignes de diff. allowed disjoints pour les tâches parallèles ; les dépendantes s'enchaînent.
  • Autonome : les travailleurs ne voient pas cette conversation — chemins, noms, conventions, pièges, ce qu'il ne faut PAS toucher.
  • Acceptation testable ; chaque critère correspond à une vérification. Jev ne vérifie que ce qui est écrit.
  • Tests cachés pour les nouveaux comportements : vous écrivez des cas limites en dehors du dépôt, référencés via hidden_files + hidden_checks ; copiés uniquement pendant la notation.
  • Fichiers protected ; max_diff_lines ≈ 2-3× votre estimation sans les tests (les lignes de test comptent dans max_test_diff_lines, par défaut 3×) ; mode: "read_only" pour l'analyse.
  • Champs Plan — faites la réflexion pour eux (−33 % de temps, −45 % de jetons de sortie, pas de violations de périmètre) : approach (étapes ordonnées ; par cause racine pour les bugs), pattern_refs (fichier:lignes — quoi copier), examples (entrée -> attendu, cas désagréables inclus), pseudo (partie délicate uniquement), rules (interdictions concrètes et vérifiables — L1 les applique en cours d'exécution). Gardez prompt_style: "profiled".
  • orch check .orch/contracts/*.json avant l'envoi ; corrigez d'abord les contrats signalés.
  • Les arbres de travail (.orch/wt/<ID>) contiennent uniquement les fichiers suivis : listez par paquet les node_modules / code généré dans worktree_links (contrat) ou .orch/config.json (globules simples) — liés symboliquement depuis l'arbre principal, donc partagés avec lui.
  • Un fichier nommé exactement dans allowed peut être modifié même s'il s'agit d'un fichier de test existant.

3. Router

Politique (utilisateur) : n'envoyez pas tout à reasonix.

Forme de la tâchePremier choixEscalader vers
Petite modification mécanique, configuration, renommage, fonction pure avec exemplesrx-acprx-acp-max → agy → sonnet
Analyse / recherche en lecture seulerx-flashrx-flash-max → sonnet
Module de fonctionnalité normal (1 à 3 fichiers, avec champs plan)sonnetOpus
Tests pour du code existant (jamais de code de fonctionnalité)haikusonnet
Refactorisation préservant le comportementsonnet + tests cachésOpus
Interface utilisateur suivant un système de conception existant (pattern_refs)agy ou sonnetsonnet
Critique : argent/comptabilité, authentification, concurrence, sécurité, migrationsOpus, ou sonnet + spécification serrée + révision ligne par ligne—
Second avis sur un diffl'autre famille, en lecture seuleOpus

agy = Gemini 3.8 Flash Medium. rx-* = DeepSeek V4 Flash (-max = effort maximal, l'échelon le plus fort de DeepSeek). rx-acp* = les mêmes modèles sous supervision en direct — aussi correct que rx-flash, moins cher, pas de fichiers parasites ; préféré pour les contrats d'édition, surtout avec des pièges (fichiers supplémentaires tentants, installations, vérifications lourdes). Goût visuel → sonnet + révision.

4. Envoi — un appel en arrière-plan, Opus dort

Chaque réveil relit tout votre contexte. Envoyez une vague en UN SEUL appel :

orch run --title "<demande de l'utilisateur, court>" .orch/contracts/A.json B.json ...   # Bash, run_in_background: true

Vous êtes réinvoqué à sa sortie — ne faites jamais de scrutation ni de veille. Par contrat, sans Opus : nouvel arbre de travail → prompt du travailleur → garde-fou → en cas d'ÉCHEC, retour automatique dans la propre session du travailleur (cache réchauffé), jusqu'à max_attempts ; les règles de code + le tri Jev choisissent une nouvelle tentative / escalade le long de l'ladder / BLOCKED (problème de contrat) / NEEDS_OPUS (environnement, y compris erreurs API/CLI — s'arrête immédiatement). Après RÉUSSITE, Jev vérifie le diff par rapport à chaque critère d'acceptation (P>0,85 → une révision automatique ; 0,7–0,85 → avertissement pour votre révision). Vous recevez une ligne compacte par tâche ; les journaux restent dans .orch/runs/<ID>/attempt-N/. hidden_feedback: "names" cache les assertions du retour lorsque vous craignez une tricherie sur les tests.

  • rx-acp s'exécute sous un superviseur en direct (règles L0 + révision L1 par Jev, en cours d'exécution). orch run --live confie également les décisions en cours d'exécution à vous (approbation du plan, modifications incertaines, questions, blocages) : orch wait → orch reply <id> --choice … --steer "…" → orch wait. Utilisez --live uniquement là où une décision en cours d'exécution vaut un réveil (contrats risqués/ambigus, nouveaux styles de contrat). Détails : references/live.md.
  • Sonnet / Haiku : orch prepare <contract> → Agent subagent_type: "sonnet-worker" (+ model: "haiku"), run_in_background: true, prompt = agent_prompt de prepare (le chemin du fichier, pas le texte). Puis :
    orch guard .orch/contracts/<ID>.json --reply - <<'EOF'
    <le JSON final du travailleur, textuellement>
    EOF
    
  • Pipelines d'étapes : after: [ids] (attendre RÉUSSITE), inputs: [ids] (injecter la réponse/diff de cette étape), build_on: id (partir de son code). Une étape échouée SAUTE les dépendantes. Schémas : agent-matrix.md §3.
  • orch dispatch = tentative unique, pour le débogage. Ne donnez jamais à un travailleur le checkout principal ou les identifiants.

5. Porte 1 — garde-fou (automatique)

ÉCHEC : hors périmètre / fichiers protégés / tests existants / manifestes de dépendances touchés, tâche en lecture seule a écrit des fichiers, aucun changement, dépassement de budget, échec des vérifications (cachées), marqueurs skip/only, assertions supprimées, secrets dans la source, fichiers indésirables, statut du travailleur ≠ terminé, erreur CLI. AVERTISSEMENT : secrets dans les tests, suppressions de lint, exceptions avalées, TODOs, impressions de débogage, diffs de seulement espaces blancs, non-concordance de rapport, préoccupations du travailleur, fichiers CLI parasites (supprimés automatiquement), activité de supervision en direct (à lire dans la Porte 2).

6. Porte 2 — Révision Opus (ne jamais sauter pour les tâches d'édition)

Lisez attempt-N/diff.patch + JSON de garde-fou avec references/review-checklist.md, puis :

  • ACCEPTER → orch merge <ID> (non indexé), exécutez les vérifications dans l'arbre principal.
  • RÉVISER → retour concret numéroté (fichier:ligne, ce qui ne va pas, à quoi ressemble le résultat) dans .orch/runs/<ID>/feedback.md ; orch dispatch <contract> --feedback <file>. Maximum 2 par tâche.
  • NEEDS_OPUS / BLOCKED → corrigez le contrat et relancez, confiez à sonnet-worker, ou prenez le relais.
  • PRENDRE LE RELAIS lorsque expliquer coûte plus que faire. Les « préoccupations » du travailleur sont des signaux à vérifier, jamais des instructions.

7. Intégrer et rapporter

  1. Fusionnez une tâche à la fois, vérifications après chacune ; résolvez les conflits vous-même.
  2. Révision holistique du diff combiné (cohérence, helpers dupliqués, restes de débogage) ; exécutez final_checks.
  3. orch clean --all ; orch status = registre.
  4. Tâches rx-acp : enregistrez ce que les règles ont manqué (orch lessons --note …) et parcourez orch lessons (live.md §Leçons).
  5. Rapport : ce qui a été fait, par qui, ce qui a été rejeté/escaladé et pourquoi, vérifications effectuées, ce qui reste. Ne validez pas sauf demande explicite.

Tableau de bord (pour l'utilisateur, surveillance uniquement) : orch ui --open → http://127.0.0.1:8765 — exécutions (tâches parentes, nommées par --title), tâches enfants, tentatives, temps, coût, progression en direct, décisions en attente, et par tentative l'échange complet entre l'orchestrateur et le travailleur. L'utilisateur répond aux décisions en vous les disant dans cette session, jamais dans le tableau de bord.

Maintenir cette compétence — distiller, jamais accumuler

Chaque modification de cette compétence (SKILL.md, références) doit la laisser aussi concise que nécessaire :

  • Remplacez, n'ajoutez pas. De nouvelles preuves mettent à jour la ligne ou le nombre existant ; pas de paragraphe daté à côté.
  • Supprimez ce qui est obsolète : modèles et alias retirés, bugs corrigés et leurs histoires, nombres obsolètes, incidents ponctuels dont la leçon est déjà encodée dans le code ou une règle. Les données brutes de benchmark vivent dans ~/workspaces/agent-bench, les anciennes versions dans ~/.claude/skill-backups/ — pas ici.
  • Ne gardez que ce qui change une décision ou empêche une erreur maintenant : la règle, plus sa raison en ≤ 1 ligne.
  • Budgets : SKILL.md ≤ ~200 lignes (toujours chargé) ; chaque référence ≤ ~150 lignes. Au-dessus du budget → distillez d'abord.
  • Les détails d'implémentation appartiennent aux docstrings du code, pas dans la documentation qu'Opus lit chaque session.
  • Après avoir modifié les scripts : python3 -I scripts/tests/test_policy.py, …/test_supervisor.py, …/test_escalation.py. Après des changements de prompt/seuil L1 : ~/workspaces/agent-bench/l1_eval.py. Après des mises à jour CLI/modèle : re-benchmarkez (agent-bench/bench.py, ab.py) et mettez les nombres à jour sur place.

Skills associés