Équipe projet
Trois rôles. Lisez les règles communes ci-dessous, puis UNIQUEMENT votre fichier de rôle :
- Brainstorm : « tu es l'agent brainstorm » → brainstorm.md
- Coordinateur : « tu es le coordinateur » → coordinator.md. Session séparée, jamais numérotée.
- Partie N : « tu es la partie N » (aussi « tâche N », « agent N ») → worker.md
<repo> = dossier ~/<repo> ; <proj> = nom court dans les noms de session (souvent identique). <NN> = numéro de partie sur deux chiffres.
Fichiers du skill : ~/.claude/skills/project-team/ (templates/, scripts/tokens.sh tokens par session, scripts/patrol.sh patrouille du coordinateur).
Construit à partir des propres runs multi-agent de l'utilisateur (2026-10).
Structure du projet (créée par le brainstorm)
CLAUDE.md pointeur de 3 lignes uniquement (templates/CLAUDE_pointer.md)
.claude/settings.json {"crossSessionInbound": "accept"} ← les sessions peuvent recevoir des messages
docs/INTERFACES.md contrats entre parties ; dans git ; modifiés dans le même commit que le code
team/ état de coordination ; `/team/` gitignoré ; vit UNIQUEMENT dans ~/<repo>/team
TEAM.md faits du projet, ordre de lecture, pouvoirs du coordinateur, règles spécifiques au projet
SCOPE.md objectif · décision utilisateur (datée) · suggestions par défaut · hors périmètre
PARTS.md tableau des parties · tableau de dispatch · diagramme de flux · vagues
parts/P<NN>_<name>.md un brief par partie
STATUS.md une ligne par partie · Need user · 10 derniers jalons
REQUESTS.md les demandes/rapports de bugs de l'utilisateur, ses mots, propriétaire, état
ISSUES.md bugs inter-parties · DECISIONS.md déviations · log/P<NN>.md notes par partie
research/NN_<topic>.md · launch.sh (sessions nommées dans tmux ; optionnel)
Les arbres de travail n'ont pas de team/ : toujours des chemins absolus ~/<repo>/team/....
Règles communes (chaque rôle)
Les noms sont des adresses. <proj> coordinator, <proj> partie N ; SendMessage vers ce nom exact. Les agents ne peuvent pas se renommer : si la première ligne de ListAgents (« Cette session est … ») n'est pas votre nom, demandez une fois à l'utilisateur : « /rename <proj> partie N s'il vous plaît », continuez à lire entre-temps.
Message uniquement quand quelqu'un doit agir. Un tag, premier mot :
| Tag | De → vers | Quand |
|---|---|---|
DONE P3.2 <sha> | partie → coordinateur | étape nommée dans un dispatch, ou partie entière, fusionnée. Les jalons vont UNIQUEMENT ici |
START P4.2 | coordinateur → partie | chaque besoin de cette étape fusionné |
STOP / RESUME | coordinateur → parties | contrôle d'exécution |
REQ R7 <les mots de l'utilisateur> / DONE R7 <sha> | coordinateur ↔ partie propriétaire | la demande de l'utilisateur routée / terminée |
DECISION <les mots de l'utilisateur> | coordinateur → parties concernées ; partie → coordinateur si l'utilisateur a parlé à la partie | l'utilisateur a décidé quelque chose |
ISSUES N | partie → partie propriétaire | N nouvelles lignes pour vous dans ISSUES.md, regroupées |
IFACE | partie → parties concernées | contrat dans INTERFACES.md modifié sous elles |
BLOCKED | partie → coordinateur | ne peut pas continuer ET pas de solution de contournement (sinon une ligne Need user, pas de message) |
ASK | quiconque → quiconque | a besoin d'une réponse ; le SEUL tag qui reçoit une réponse |
- Style préhistorique, ≤2 lignes, ≤300 caractères, fait en premier. Pointez vers le fichier/commit, n'expliquez pas.
- Pas de réponse sauf
ASK. Jamais d'accusé de réception, remerciement, « je vais le faire », « je commence maintenant », progression, « tout va bien ». - Digne d'être enregistré → disque (ligne STATUS, log, ISSUES, DECISIONS), pas un message.
- En attente : terminez votre tour. Pas de polling, pas de boucles sleep ; un message vous réveille.
- Agent à la dérive (bavard, accusé de réception, hors périmètre) : rappel d'une ligne, une fois.
Fichiers partagés. Plusieurs agents écrivent dans team/ : modifiez STATUS/REQUESTS uniquement avec l'outil Edit (il refuse les écritures obsolètes ; relisez et réessayez), ajoutez à ISSUES/DECISIONS avec >>. Jamais sed -i ou Write par-dessus.
L'utilisateur ne reçoit des questions que via le coordinateur, regroupées et numérotées. Les parties ne bloquent jamais sur l'utilisateur et n'utilisent jamais AskUserQuestion : ligne Need user dans STATUS (- [ ] P3 : question ; solution de contournement utilisée ; impact), utilisez la suggestion du brief, enregistrez dans DECISIONS.md, continuez.
Chaque rôle est un lead. Lecture large, codage, longs tests → sous-agents avec briefs préhistoriques (périmètre, chemins absolus qu'ils peuvent modifier, critères de fin), rapports ≤100 mots, sortie longue dans des fichiers. Les sous-agents concurrents ne modifient jamais le même fichier ; les registres/fichiers d'index partagés uniquement par le lead.
Machine partagée. Ne tuez que les PID que vous avez démarrés (un pkill -f vite d'une partie a tué les serveurs de tout le monde). Uniquement votre plage de ports. nvidia-smi avant d'utiliser le GPU. Ne déclarez jamais un autre agent mort à partir de ListAgents seul (vérifiez ps, tmux, mtime du transcript) ; ne tuez jamais son travail ou ses processus et ne les reprenez pas sans l'utilisateur. Ne redémarrez jamais un service que quelqu'un pourrait utiliser (l'utilisateur joue, une démo) sans vérifier qu'il est inactif. Le mode automatique bloque une commande → ne réessayez pas et ne contournez pas ; ligne Need user ; passez à autre chose. Les règles globales de l'utilisateur s'appliquent toujours.
STOP : terminez la petite action en cours, arrêtez vos sous-agents et serveurs de dev (les services de production/en ligne restent actifs), committez le WIP sur votre branche (jamais main), enregistrez « arrêté à X, prochaine étape Y », ligne stopped, terminez le tour. RESUME / après compaction : relisez TEAM.md (les règles peuvent avoir changé), votre log, votre ligne, git status ; continuez.