pcommittee (comité à deux agents)

Lorsque vous êtes bloqué, que vous tournez en rond ou que vous êtes victime d'un tunnel cognitif, ce skill forme un comité de deux agents paseo aux profils contrastés qui analysent le problème en parallèle, débattent de leurs divergences et convergent vers un plan d'action. Analyse uniquement : le comité ne modifie jamais de fichiers.

Qu'est-ce que pcommittee (comité à deux agents) ?

pcommittee est un skill avancé pour les agents d'IA (compatible avec Claude Code, Codex, et paseo) qui crée un comité de deux agents de familles de modèles différentes (par défaut Claude et Codex) pour analyser un problème complexe. Il est spécifiquement conçu pour les situations où vous tournez en rond, où la cause racine d'un bug est insaisissable, ou lorsqu'un plan coûteux mérite une deuxième et troisième opinion avant d'être exécuté. Le comité travaille en parallèle dans des contextes frais : chaque agent reçoit la même consigne écrite dans un fichier temporaire, puis leurs réponses sont comparées. En cas de divergence réelle, on envoie à chaque agent l'argument de l'autre pour un débat ciblé. Après deux rounds maximum, si le désaccord persiste, ce constat est considéré comme un résultat valide. Le comité n'édite jamais de fichiers — l'implémentation finale revient à l'humain. Le skill utilise paseo pour la gestion des sessions, `paseo-notify` pour l'attente non bloquante, et impose des règles strictes (pas de polling, pas de messages d'urgence, pas d'archivage des membres avant la fin). Il coûte deux agents en mode `xhigh`, donc ne doit être utilisé que sur des problèmes qui le justifient.

Compatible avec✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/evrenverse/agent-skills/tree/HEAD/skills/pcommittee

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · 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

pcommittee (comité à deux agents — analyse des causes racines)

Aperçu

Deux agents, deux familles de modèles, le même problème, un contexte frais de chaque côté. Ils analysent en parallèle ; vous les faites débattre là où ils divergent ; vous synthétisez ce qui résiste. Ensuite, VOUS implémentez — le comité ne touche jamais à un fichier.

Quand cela en vaut le coût : vous avez tourné deux fois dans la même boucle, le bug n'a pas de cause racine évidente, ou un plan est suffisamment coûteux pour mériter un deuxième et un troisième avis avant d'être construit. Deux agents xhigh ne sont pas bon marché. Pour un seul avis, utilisez padvisor ; pour déléguer du travail, utilisez pspawn ou phandoff.

Ce que les agents générés peuvent faire. Les deux s'exécutent sans invites de permission (par défaut de l'équipe — bypassPermissions sur Claude, full-access sur Codex), mais ils sont en lecture seule par instruction, pas par mode : le suffixe « pas d'édition » dans la consigne les empêche de modifier des fichiers. Une équipe qui souhaite plus peut le demander dans le fichier AGENTS.md du dépôt, qui est aussi une instruction, ou le bloquer avec les règles permissions.deny de Claude Code, qui s'appliquent toujours même en mode bypassPermissions.

Invocation

/pcommittee <problème> — la paire par défaut est ci-dessous ; les membres nommés par l'utilisateur la remplacent.

Composition

Le contraste est le mécanisme, pas un supplément d'élégance. Deux agents de la même famille produisent deux fois le même angle mort et appellent l'accord une confirmation.

Le comité par défaut associe claude et codex ; les deux doivent apparaître comme available et Enabled dans paseo provider ls :

  • Membre A : le modèle Opus le plus récent listé par paseo provider models claude (par exemple claude/claude-opus-5-5) · réflexion xhigh · mode bypassPermissions
  • Membre B : le modèle le plus récent de Codex, le premier id dans paseo provider models codex · réflexion xhigh · mode full-access

Lisez les identifiants depuis ces listes, jamais de mémoire. Le membre Claude prend l'id simple, qui est le modèle 1M (pspawn explique pourquoi pas [1m]). Les deux membres s'exécutent sans invites de permission, comme tout agent généré (défaut de l'équipe) ; le suffixe « pas d'édition », pas le mode, les empêche de modifier des fichiers.

Si l'utilisateur nomme des membres, utilisez-les. Si une seule famille est disponible, dites-le et exécutez padvisor au lieu de faire croire qu'un comité à un seul membre est un comité.

Étapes

1. Rédigez UNE seule consigne problème. Les deux membres reçoivent le texte identique — des consignes différentes font du désaccord un artefact de votre formulation au lieu d'une véritable divergence.

Écrivez-la dans un fichier dédié et passez "$(cat <fichier consigne>)" aux deux générations. Taper deux fois le même heredoc, c'est permettre aux textes de dériver silencieusement ; un fichier rend l'identité structurelle au lieu de nécessiter de l'attention. Créez le fichier avec mktemp et utilisez le chemin qu'il affiche comme <fichier consigne> : un nom fixe dans /tmp entre en collision avec le comité d'une autre session et est lisible par tous les utilisateurs, un fichier mktemp est nouveau pour cette exécution et lisible uniquement par vous.

Commencez par la langue de réponse, celle de la conversation de l'utilisateur (Réponds en <langue>.) — les membres répondent dans la langue de la consigne, et une conversation dans une langue avec deux rapports dans une autre est une friction que vous payez au moment de la synthèse.

[La langue de la conversation de l'utilisateur, sous forme d'instruction : "Réponds en <cette langue>."]

## Le problème
[Ce qui ne va pas ou n'est pas décidé. Symptômes, pas votre théorie — votre théorie est ce que vous voulez voir testé.]

## Ce qui est connu
[Faits, mesures, messages d'erreur, textuellement. Pas des conclusions.]

## Ce qui a été essayé
- [Approche] — [ce qui s'est passé, pourquoi elle a été abandonnée]

## Où chercher
- `/chemin/absolu/fichier.ts` — [ce que c'est et pourquoi c'est important]

## Ce que je veux en retour
Une analyse des causes racines et un plan. Indiquez votre degré de certitude, et nommez ce qui infirmerait votre diagnostic. Si le problème tel qu'il est formulé n'est pas le bon problème, dites-le d'abord.

Ceci est une analyse uniquement. N'éditez, ne créez, ni ne supprimez aucun fichier. N'écrivez pas de code.

Gardez VOTRE propre hypothèse HORS de la consigne, ou vous la récupérez deux fois en des mots différents. Si vous devez la mentionner, marquez-la comme une hypothèse à attaquer.

2. Générez les deux en tant qu'enfants de cette session. Vérifiez d'abord la disponibilité des fournisseurs, exactement comme à l'étape 1 de pspawn (<répertoire de base de cette compétence>/../pspawn/SKILL.md). Ensuite, dans la même réponse pour qu'ils réfléchissent en parallèle :

paseo run --no-wait --json --provider '<claude/nouvel-opus>' --thinking xhigh \
  --mode bypassPermissions --title "[Comité A] <sujet>" "$(cat <fichier consigne>)"
paseo run --no-wait --json --provider '<codex/nouveau>' --thinking xhigh \
  --mode full-access --title "[Comité B] <sujet>" "$(cat <fichier consigne>)"

Sous paseo, les deux atterrissent automatiquement dans l'espace de travail de cette session, en tant qu'enfants de cette session — et restent ainsi : ne les détachez pas. Le comité appartient à cette question ; archiver cette session les archive aussi, ce qui est le comportement attendu. Hors de paseo, ajoutez --workspace <id>, recherché une seule fois comme à l'étape 2 de pspawn.

3. Attendez les deux — un paseo-notify par membre, puis terminez votre tour.

paseo-notify <id-a>; paseo-notify <id-b>

Le message de chaque membre arrive sur son propre canal. Si l'un est dedans et l'autre encore dehors, terminez à nouveau votre tour ; le deuxième message vous réveille. a terminé son tour → il a répondu. attend une permission → une demande est en attente de votre part. arrêté sur erreur → dites-le et lisez ses logs ; ne relancez pas silencieusement. Une limite d'utilisation ne vous réveille pas : paseo-limit-watch reprend le membre et réarme la surveillance, là où sa ligne cron est installée (voir le README) ; sans cela, vérifiez vous-même le membre après la réinitialisation. Les membres mettent généralement 15 à 30 minutes. N'interrogez jamais, ne faites jamais de sleep, n'envoyez jamais de messages d'urgence.

Hors de paseo (pas de $PASEO_AGENT_ID) : paseo wait <id-a> --json; paseo wait <id-b> --json dans UN SEUL appel bash avec run_in_background: true, et lisez chaque status depuis le JSON, jamais le code de sortie.

En cas de permission (rare en mode bypass et full-access, mais un rm -rf demande quand même) le membre se bloque sans que personne ne surveille. Lisez-la (paseo permit ls), décidez si elle relève du mandat que vous avez donné, puis paseo permit allow <agent-id> <request-id> ou deny (les deux ids proviennent de paseo permit ls), et armez à nouveau paseo-notify. En dehors du mandat ou en cas de doute → demandez à l'utilisateur, n'approuvez pas à sa place.

4. Lisez les deux.

paseo logs <id> --filter text --tail 3

pagent.py <id> -t -n 3 --full (<répertoire de base de cette compétence>/../pagent/) est plus riche, avec des horodatages, et lit aussi bien le membre Claude que le membre Codex.

5. Faites-les débattre. C'est l'étape qui fait qu'un comité vaut deux agents — la sauter vous laisse avec deux rapports et aucune résolution.

Identifiez où ils divergent réellement — une cause racine différente, un correctif différent, une évaluation des risques différente. Ignorez les différences de formulation et d'accent ; ce ne sont pas des désaccords.

Pour chaque divergence réelle, envoyez à chaque membre l'argument de l'AUTRE :

paseo send --behavior steer --no-wait <id-a> "Le membre B conclut <X>, sur la base de : <raisonnement textuel>. Adressez-le directement : où B a-t-il tort, ou où vous êtes-vous trompé ? Changez votre position si B a raison — dites-le clairement si c'est le cas."
paseo send --behavior steer --no-wait <id-b> "Le membre A conclut <Y>, sur la base de : <raisonnement textuel>. Adressez-le directement : où A a-t-il tort, ou où vous êtes-vous trompé ? Changez votre position si A a raison — dites-le clairement si c'est le cas."

Un long raisonnement textuel est plus facile à passer sous forme de fichier : écrivez le message et utilisez paseo send --behavior steer --no-wait --prompt-file <fichier> <id>. Si le fournisseur n'accepte pas le steering, il peut retomber sur l'interruption. paseo send ranime un agent archivé — vérifiez ArchivedAt dans paseo inspect <id> --json d'abord ; ne ranimez pas des membres archivés.

--no-wait est obligatoire ici. Un simple paseo send BLOQUE jusqu'à ce que l'agent termine — deux appels bloquants exécutent les membres séquentiellement au lieu de parallèlement, et le premier seul dépasse la limite de 10 minutes du Bash en avant-plan. Déclenchez les deux en non-bloquant, puis armez à nouveau les deux surveillances (étape 3) et relisez (étape 4). Deux tours sont normalement suffisants. S'ils divergent encore après deux tours, arrêtez-vous et rapportez le désaccord comme résultat — un véritable split non résolu entre deux modèles puissants est une découverte réelle sur le problème, et fabriquer un consensus en envoyant un troisième tour la détruit.

6. Synthétisez pour l'utilisateur :

  • Ce sur quoi les deux sont d'accord — c'est la partie porteuse
  • Là où ils divergent, et comment cela s'est résolu (ou non)
  • Votre propre lecture, marquée comme vôtre
  • Le plan que vous suivriez maintenant

7. Archivez les deux — paseo archive <id> pour chacun — sauf si l'utilisateur souhaite continuer à les interroger.

Erreurs courantes

ErreurCorrectif
Deux membres de la même famille de fournisseursLe contraste est le mécanisme — claude + codex
Consigne différente par membreUn seul fichier, "$(cat …)" dans les deux générations — deux heredocs dérivent
Langue de réponse non spécifiéeLes membres répondent dans la langue de la consigne ; commencez par celle de l'utilisateur
Votre propre hypothèse présentée comme un fait dans la consigneLaissez-la de côté, ou marquez-la comme une hypothèse à attaquer
Sauter le tour de débatDeux rapports ne font pas un comité — l'étape 5 est la valeur ajoutée
Forcer le consensus au troisième tourUn split non résolu entre deux modèles puissants EST la découverte
Faire confiance au code de sortie de paseo waitIl est 0 pour inactif, permission et erreur — lisez status depuis --json
Attente en avant-planrun_in_background: true ; la limite Bash de 10 minutes tue l'attente, pas les agents
Membre Codex laissé dans son mode par défaut, ou claude en autocodex → full-access, claude → bypassPermissions (défauts de l'équipe) ; un membre dans son mode par défaut se bloque sur des invites auxquelles personne ne répond
Interrogation / messages d'urgencepaseo-notify par membre et terminez votre tour ; les membres réfléchissent pendant 15 à 30 minutes
Simple paseo send au deuxième tourIl BLOQUE jusqu'à la fin — --no-wait pour les deux, puis étape 3
Suffixe « pas d'édition » omisLes deux membres commencent à implémenter ce que vous leur avez demandé d'analyser
Détacher les membres, ou env -u PASEO_AGENT_IDIls sont intentionnellement les enfants de cette session : ils disparaissent quand elle est archivée
Lancer un comité sur une petite questionpadvisor — un agent, un avis, une fraction du coût

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills associés