orchestrate-until-done
Splits a user request into subtasks, writes .claude/completude.md, launches parallel agents, and refuses to hand back until every checkbox is done or explicitly declined. Use at the start of any multi
SKILL.md.claude/skills/orchestrate-until-done/SKILL.md
GitHubOrchestrate until done
Ce skill existe parce que l'utilisateur ne doit jamais relancer pour un travail que tu pouvais finir. Le coût n'est pas le point oublié : c'est lui qui fait ta revue à ta place.
Il n'y a pas de moteur Workflow Claude dans ce harness (seule commande workflow = plan-and-confirm). OpenCode n'a pas de Stop hook : le plugin .opencode/plugins/completude-idle.js + ce skill + AGENTS.md en tiennent lieu.
Charge aussi : skill fin-de-tache (gabarit) et, si feature ≥ 3 fichiers, feature-delivery + plan-and-confirm.
Détails : completude-contract.md · split-and-agents.md · preserve-surfaces.md · harness.md
0. Avant toute chose
Copie cette checklist dans ta réponse interne et coche-la :
Orchestre :
- [ ] 1. Relire la demande mot pour mot (verbes à l'impératif = points)
- [ ] 2. Ouvrir .claude/completude.md AU DÉBUT (gabarit fin-de-tache)
- [ ] 3. Internet si le monde extérieur est en jeu (loi, API, harness, produit tiers)
- [ ] 4. Lire l'architecture déjà écrite (dossier UCAO, rules, AGENTS.md) — ne pas réinventer
- [ ] 5. Découper en sous-tâches indépendantes
- [ ] 6. Lancer des agents en parallèle sur ce qui n'écrit pas le même fichier
- [ ] 7. Préserver desktop ET mobile ET print (jamais « simplifier » en supprimant une surface)
- [ ] 8. Vérifier chaque affirmation (fichier:ligne / commande / URL)
- [ ] 9. Ne rendre la main que si toutes les cases sont cochées OU dans « Non fait, et pourquoi »
Si tu t'apprêtes à écrire « dis-moi si tu veux que je continue » alors qu'il reste des cases : tu es en train d'échouer. Continue.
1. Découper le prompt
Relis le message utilisateur. Chaque verbe impératif, chaque « et », chaque liste numérotée est un livrable.
Interdit de paraphraser dans « Demandé, mot pour mot » : la paraphrase est l'endroit où un point disparaît.
Règles de découpe (lire split-and-agents.md si > 6 points) :
- Un point = un résultat observable (fichier, comportement, preuve).
- Séparer recherche / conception / code / preuve d'écran / déploiement.
- Si un dossier d'architecture existe déjà (ex.
.opencode/structuration/ucao-uuc-dossier-2026-09/), les lots de ce dossier sont les sous-tâches. Ne pas en inventer une autre liste.
2. Agents
Dès que deux sous-tâches n'écrivent pas les mêmes fichiers, lance-les dans le même tour via l'outil Task.
| Nature | subagent_type | Écrit du code ? |
|---|---|---|
| Inventaire, grep, parcours | explore | non |
| Lot d'implémentation borné | general | oui, si le lot l'autorise |
| Second angle | critique-transversale (agent fichier) | non |
Consigne obligatoire dans le prompt de l'agent :
- périmètre de fichiers ;
- « n'efface aucune variante mobile/desktop/print » ;
- ce qu'il doit rapporter (chemins, SHA, commandes) ;
- ce qu'il ne doit pas faire (commit, deploy, hors lot).
Toi, orchestrateur : tu ne dupliques pas le travail d'un agent encore en cours. Tu fusionnes ses preuves dans completude.md.
3. Architecture déjà définie
Ordre de vérité (du plus fort au plus faible) :
- Exigences actuelles de l'utilisateur
- Code et expériences
- Dossier de conception déjà livré (UCAO =
ucao-uuc-dossier-2026-09/) - Entretiens / artifact
- Sites publics
Ne reconstruis pas un module que le dossier classe « réutilisable ». Ne code pas un if (ucao). Suis les lots 0→N du backlog, pas l'ordre qui t'arrange.
Code non trivial : plan-and-confirm sauf si l'utilisateur a déjà dit « lance », « OKAY », « fais-le », « arrête de demander ». Alors tu exécutes le lot suivant du dossier, tu n'attends pas un second OKAY.
4. Surfaces UI — interdit de « simplifier »
KLASSCI a souvent deux (ou trois) vues pour le même écran : desktop, _show-mobile, PDF. Un refactor qui « nettoie » en fusionnant ou en supprimant le mobile est un bug produit.
Avant tout delete_file / rewrite Blade :
- Glob
*mobile*,*print*,pdf*,sm:,md:autour du fichier. - Si une variante existe, elle reste, sauf demande explicite de la retirer.
- Le diff ne doit pas réduire le nombre de breakpoints couverts.
Détail et exemples : preserve-surfaces.md
5. Internet
Si la tâche touche un harness, une loi, un prestataire, un format officiel, une version de framework : fetch maintenant. « Je suppose » n'est pas une source. Si le fetch échoue, note l'URL et l'erreur dans « Non fait », puis continue le reste.
6. Quand tu as le droit de t'arrêter
Seulement si :
- toutes les cases « À livrer » sont cochées et le tableau preuves a assez de lignes (hook : ≥ 3 cochées ⇒ ≥ 1 preuve pour 2 cases) ;
- ou chaque case restante est dans « Non fait, et pourquoi » avec un obstacle nommé (décision utilisateur, outil absent, risque refusé) — jamais « pas eu le temps » ;
- ou le hook Stop / plugin idle a déjà rappelé une fois et l'obstacle est réel (
stop_hook_active).
Tu n'as pas le droit de t'arrêter pour : contexte long, « c'est déjà pas mal », « je propose la suite », « veux-tu que je continue ? », fatigue simulée.
7. Branchement hooks
- Claude Code : Stop →
.claude/hooks/completude-check.sh(déjà danssettings.json). - OpenCode :
.opencode/plugins/completude-idle.js(session.idle + compaction). - N'importe quel harness : le bloc Pre-prompt dans
AGENTS.md(lu au démarrage).
Si tu travailles hors Claude et que le plugin n'a pas tourné : simule le hook avant de conclure — relis completude.md, compte les [ ].
8. Commande
Utilisateur : /orchestrate (Claude ou OpenCode) ou « lance-toi » / « continue ». Toi : ce skill, tout de suite, sans demander confirmation du skill.