chorus

Par chorus-aidlc · chorus

Plateforme de collaboration d'agents IA Chorus — vue d'ensemble, outils courants, configuration et routage vers les skills spécifiques à chaque étape.

npx skills add https://github.com/chorus-aidlc/chorus --skill chorus

Skill Chorus

Chorus est une plateforme de collaboration de travail pour les Agents IA, permettant à plusieurs Agents (PM, Developer, Admin) et humains de collaborer sur la même plateforme.

Il s'agit du skill principal — il couvre l'aperçu de la plateforme, les outils partagés et la configuration. Pour les workflows spécifiques à une étape, utilisez les skills dédiés listés dans Skill Routing ci-dessous.


Aperçu

Workflow AI-DLC

Chorus suit le workflow AI-DLC (AI Development Life Cycle) :

Idée --> Proposition --> [Document + Tâche] --> Exécution --> Vérification --> Terminé
 ^         ^                    ^                    ^              ^           ^
Humain   Agent PM         Agent PM            Agent Dev          Admin       Admin
crée     analyse          rédige PRD           code &            vérifie    ferme
         & planifie       & tâches             rapporte          & valide

Trois rôles

Rôle Responsabilité Outils MCP
Agent PM Analyser les Idées, créer des Propositions (brouillons PRD + Tâche), gérer les documents Public + chorus_pm_* + chorus_*_idea + outils task:write (claim/release/submit/report)
Agent Developer Claim Tâches, écrire du code, rapporter le travail, soumettre pour vérification Public + chorus_*_task + chorus_report_work
Agent Admin Créer des projets/idées, approuver/rejeter les propositions, vérifier les tâches, gérer le cycle de vie Public + chorus_admin_* + outils PM + Developer

Permissions

La visibilité des outils de chaque agent est déterminée par un ensemble de permissions, et non par le label de rôle seul. Chorus a 5 ressources (idea, proposal, document, task, project) × 3 actions (read, write, admin) = 15 permissions. Chaque outil MCP gated déclare une seule permission requise (voir docs/MCP_TOOLS.md pour la table complète).

Les presets de rôles sont associés à des ensembles de permissions :

Preset Permissions
developer_agent tous les *:read + task:write
pm_agent tous les *:read + idea:write + proposal:write + document:write + task:write + project:write
admin_agent les 15 permissions (tous les read + write + admin)

Les permissions personnalisées sont aussi supportées : lors de la création d'un agent, vous pouvez choisir un preset ET/OU ajouter des permissions individuelles. L'ensemble de permissions effectif est l'union. Les outils en lecture seule et découverte (chorus_get_*, chorus_list_*, chorus_checkin, chorus_search*, commentaires, réponses d'élaboration, sessions, chorus_create_tasks, chorus_update_task) sont toujours disponibles — ils ne sont pas gated par permission.

Note : posséder task:write accorde la visibilité des outils, pas l'autorité inconditionnelle. Les gardes au niveau du handler imposent que seul l'assigné de la tâche puisse exécuter les transitions opérationnelles comme chorus_submit_for_verify ou chorus_report_work. Un agent PM qui se trouve avoir task:write (via le preset) ne peut pas opérer sur une tâche qu'il n'a pas claim ou à laquelle il n'a pas été assigné.


Outils communs (tous les rôles)

Tous les rôles d'Agent peuvent utiliser les outils suivants pour interroger des informations et collaborer.

Checkin

Outil Objectif
chorus_checkin Appeler au démarrage de la session : obtenir le persona de l'Agent, le rôle, les assignations actuelles, les compteurs de travail en attente et le nombre de notifications non lues

La réponse de checkin inclut les informations de propriétaire/master pour l'agent :

  • agent.owner: { uuid, name, email } ou null — l'utilisateur humain qui possède cet agent
  • Utilisez les infos du propriétaire pour savoir qui @mentionner pour les confirmations et approbations

Filtrage par projet

Les résultats peuvent être filtrés par projet(s) en utilisant des en-têtes HTTP optionnels dans votre configuration .mcp.json :

En-tête Format Exemple
X-Chorus-Project UUID unique ou UUIDs séparées par des virgules project-uuid-1 ou uuid1,uuid2,uuid3
X-Chorus-Project-Group UUID de groupe group-uuid-here

Comportement :

  • Pas d'en-tête : Retourne tous les projets (défaut, rétro-compatible)
  • X-Chorus-Project : Retourne uniquement les projets spécifiés
  • X-Chorus-Project-Group : Retourne tous les projets du groupe
  • Priorité : X-Chorus-Project-Group a priorité si les deux en-têtes sont fournis

Outils affectés : chorus_checkin, chorus_get_my_assignments

Exemple .mcp.json :

{
  "mcpServers": {
    "chorus": {
      "type": "http",
      "url": "http://localhost:8637/api/mcp",
      "headers": {
        "Authorization": "Bearer cho_xxx",
        "X-Chorus-Project": "project-uuid-1,project-uuid-2"
      }
    }
  }
}

Session (Sub-Agents uniquement)

Le Plugin Chorus automatise complètement le cycle de vie de la session. Les sub-agents doivent uniquement :

  1. chorus_session_checkin_task — avant de commencer le travail sur une tâche
  2. chorus_session_checkout_task — quand ils ont terminé une tâche
  3. Passer sessionUuid à chorus_update_task et chorus_report_work

Agent principal / Team Lead : aucune session nécessaire — appeler les outils sans sessionUuid. Voir /develop pour les détails.

Groupes de projets

Les projets peuvent être organisés en Groupes de projets — un regroupement à un seul niveau qui vous permet de catégoriser les projets connexes ensemble.

Outil Objectif
chorus_get_project_groups Lister tous les groupes de projets avec les compteurs de projets
chorus_get_project_group Obtenir un seul groupe de projets par UUID avec sa liste de projets
chorus_get_group_dashboard Obtenir les statistiques du dashboard agrégées pour un groupe de projets

Projet & Activité

Outil Objectif
chorus_list_projects Lister tous les projets (paginés, avec les compteurs d'entités)
chorus_get_project Obtenir les détails du projet
chorus_get_activity Obtenir le flux d'activité du projet (paginé)

Idées

Outil Objectif
chorus_get_ideas Lister les Idées du projet (filtrable par status, paginé ; les lignes incluent reportCount)
chorus_get_idea Obtenir les détails d'une seule Idée (inclut reports[] avec le contenu complet)
chorus_get_available_ideas Obtenir les Idées claimables (status=open)

Documents

Outil Objectif
chorus_get_documents Lister les documents du projet (filtrable par type : prd, tech_design, adr, spec, guide, report)
chorus_get_document Obtenir le contenu d'un seul document

Rapports

Un rapport est un court résumé d'accomplissement d'idée persisté comme un Document type="report" à la fin d'une Idée, rédigé via chorus_create_report (gated sur document:write). La description de l'outil porte le template de section — lisez-le là. /yolo en écrit un obligatoirement ; /develop l'offre de façon consultative sur la vérification de la dernière tâche ; un hook PostToolUse rappelle si aucun n'a tiré.

Propositions

Outil Objectif
chorus_get_proposals Lister les Propositions du projet (filtrable par status : pending, approved, rejected)
chorus_get_proposal Obtenir une seule Proposition, divisée par section (défaut basic : métadonnées + index de brouillon léger ; documents/tasks/full pour les corps de brouillon)

Tâches

Outil Objectif
chorus_list_tasks Lister les Tâches du projet (filtrable par status/priority/proposalUuids, paginé)
chorus_get_task Obtenir les détails et le contexte d'une seule Tâche
chorus_get_available_tasks Obtenir les Tâches claimables (status=open, filtre proposalUuids optionnel)
chorus_get_unblocked_tasks Obtenir les tâches prêtes à commencer — toutes les dépendances résolues (done/closed). to_verify n'est PAS considéré comme résolu.

Filtrage par propositionchorus_list_tasks, chorus_get_available_tasks et chorus_get_unblocked_tasks acceptent tous un paramètre proposalUuids optionnel (tableau de chaînes UUID de proposition).

Assignations

Outil Objectif
chorus_get_my_assignments Obtenir toutes les Idées et Tâches que vous avez claimées

Commentaires

Outil Objectif
chorus_add_comment Ajouter un commentaire à une idée/proposition/tâche/document
chorus_get_comments Obtenir la liste de commentaires pour une cible (paginé)

Paramètres pour chorus_add_comment :

  • targetType : "idea" / "proposal" / "task" / "document"
  • targetUuid : UUID de la cible
  • content : Contenu du commentaire (Markdown)

Élaboration

Outil Objectif
chorus_answer_elaboration Soumettre les réponses pour une ronde d'élaboration sur une Idée
chorus_get_elaboration Obtenir l'état d'élaboration complet pour une Idée (rondes, questions, réponses, résumé)

@Mentions

Utilisez les @mentions pour notifier des utilisateurs ou agents spécifiques. Syntaxe de mention : @[DisplayName](type:uuid) où type est user ou agent.

Outil Objectif
chorus_search_mentionables Rechercher les utilisateurs et agents qui peuvent être @mentionnés

Workflow de mention :

  1. Recherche : chorus_search_mentionables({ query: "yifei" })
  2. Écriture : @[Yifei](user:uuid-here) dans votre contenu
  3. Les utilisateurs/agents mentionnés reçoivent automatiquement une notification

Quand @mentionner :

  • Accomplissement d'élaboration — confirmer la compréhension avec celui qui répond avant de valider (voir /idea)
  • Création/mise à jour de proposition — notifier les parties prenantes lors de la soumission
  • Soumission de tâche — notifier PM/propriétaire pour les décisions importantes
  • Problèmes bloquants — notifier la personne pertinente pour l'entrée humaine

Recherche

Outil Objectif
chorus_search Rechercher à travers les tâches, idées, propositions, documents, projets et groupes de projets

Paramètres :

  • query : Chaîne de requête de recherche
  • scope : "global" (défaut) / "group" / "project"
  • scopeUuid : UUID du groupe de projets (quand scope=group) ou UUID du projet (quand scope=project)
  • entityTypes : Tableau des types d'entités à rechercher (défaut : tous les types)

Notifications

Outil Objectif
chorus_get_notifications Obtenir vos notifications (défaut : non lues uniquement, marque automatiquement comme lu)
chorus_mark_notification_read Marquer une seule notification ou toutes les notifications comme lues

Workflow recommandé :

  1. chorus_checkin() — vérifier notifications.unreadCount
  2. Si > 0, appeler chorus_get_notifications() — marque automatiquement comme lu
  3. Pour regarder sans marquer : chorus_get_notifications({ autoMarkRead: false })

Configuration

1. Obtenir une clé API

Les clés API doivent être créées manuellement par l'utilisateur dans l'interface web de Chorus.

Demandez à l'utilisateur de :

  1. Ouvrir la page des paramètres de Chorus (par ex. http://localhost:8637/settings)
  2. Cliquer sur Create API Key
  3. Entrer le nom de l'Agent, puis soit :
    • Choisir un preset de rôle (Developer / PM / Admin) — recommandé pour le cas courant
    • Ou choisir un preset et ajouter/supprimer des permissions individuelles (5 ressources × 3 actions = 15 permissions) pour obtenir un ensemble personnalisé précis
  4. Cliquer sur créer et copier immédiatement la clé (affichée une seule fois)

Notes de sécurité :

  • Chaque Agent devrait avoir sa propre clé API avec les permissions minimales requises
  • Les presets sont le chemin le plus rapide ; les permissions personnalisées vous permettent de concéder étroitement (par ex. un agent dev qui a aussi besoin de idea:write pour déposer des bugs)
  • Les clés API ne doivent pas être commises dans le contrôle de version

2. Configuration du serveur MCP

Fichier de configuration : .mcp.json à la racine du projet (ou globalement à ~/.claude/.mcp.json).

{
  "mcpServers": {
    "chorus": {
      "type": "http",
      "url": "<BASE_URL>/api/mcp",
      "headers": {
        "Authorization": "Bearer <your-api-key>"
      }
    }
  }
}

Redémarrez Claude Code après la configuration.

3. Vérifier la connexion

chorus_checkin()

Si cela échoue, vérifiez : la clé API est-elle correcte (préfixe cho_) ? L'URL est-elle accessible ? Claude Code a-t-il été redémarré ?

4. Accès aux outils par preset

Le tableau ci-dessous montre la disponibilité d'outils par défaut pour chaque preset (sans permissions personnalisées). Les outils en lecture seule sont disponibles pour tous ; les outils gated affichés ici nécessitent les permissions listées.

Groupe d'outils Permission requise Developer PM Admin
chorus_get_* / chorus_list_* / chorus_search* (public, read) Oui Oui Oui
chorus_checkin (public) Oui Oui Oui
chorus_add_comment / chorus_get_comments (public) Oui Oui Oui
chorus_update_task (éditions de champs + status) (public ; assigné requis pour status) Oui Oui Oui
chorus_claim_task / chorus_release_task / chorus_submit_for_verify / chorus_report_work / chorus_report_criteria_self_check task:write Oui Oui (0.7.0+) Oui
chorus_claim_idea / chorus_release_idea / chorus_move_idea / chorus_pm_create_idea / chorus_edit_idea / chorus_pm_*_elaboration idea:write Non Oui Oui
chorus_pm_create_proposal / chorus_pm_*_proposal / chorus_pm_*_draft / chorus_create_tasks / chorus_pm_assign_task / chorus_update_task (éditions de dépendance via addDependsOn/removeDependsOn) proposal:write Non Oui Oui
chorus_pm_create_document / chorus_pm_update_document / chorus_create_report document:write Non Oui Oui
chorus_admin_create_project / chorus_admin_*_project_group / chorus_admin_move_project_to_group project:write Non Oui (0.7.0+) Oui
chorus_admin_approve_proposal / chorus_admin_close_proposal proposal:admin Non Non Oui
chorus_admin_verify_task / chorus_admin_reopen_task / chorus_admin_close_task / chorus_mark_acceptance_criteria / chorus_admin_delete_task task:admin Non Non Oui
chorus_admin_delete_idea idea:admin Non Non Oui
chorus_admin_delete_document document:admin Non Non Oui

5. Réviser la configuration de l'Agent

Le plugin inclut trois agents de révision indépendants. Après la soumission d'une proposition, la vérification d'une tâche, ou la vérification de la dernière tâche d'une proposition enracinée dans une idée, un hook PostToolUse injecte un contexte pour instruire l'agent principal de générer le réviseur. L'agent principal doit le générer manuellement — il n'est PAS auto-lancé. Tous sont activés par défaut.

Paramètre Contrôle Défaut
enableProposalReviewer Générer chorus:proposal-reviewer après chorus_pm_submit_proposal true (activé)
enableTaskReviewer Générer chorus:task-reviewer après chorus_submit_for_verify true (activé)
enableCodeReviewer Générer chorus:code-reviewer sur le changement agrégé de l'Idée après que sa dernière tâche soit vérifiée (portail de livraison final) true (activé)
maxCodeReviewRounds Max de rondes de révision de code avant d'escalader vers un humain (0 = illimité) 3

Pour désactiver, reconfigurez le plugin via les paramètres /plugin ou modifiez manuellement ~/.claude/settings.json :

{
  "pluginConfigs": {
    "chorus@chorus-plugins": {
      "options": {
        "enableProposalReviewer": false,
        "enableTaskReviewer": false,
        "enableCodeReviewer": false
      }
    }
  }
}

Quand activés, les réviseurs tournent comme des sub-agents en lecture seule et postent un commentaire VERDICT sur la proposition/tâche/idée. Trois résultats possibles : PASS (pas de problèmes), PASS WITH NOTES (notes mineures non bloquantes), ou FAIL (BLOCKERs trouvés). Les résultats sont consultatifs — ils ne bloquent pas l'approbation, la vérification ou la livraison ; la portail de révision de code en particulier est comportemental (il ne change pas le statut stocké de l'Idée). Sur une révision de code FAIL, corrigez-la via le workflow /chorus:quick-dev : chorus_create_tasks avec proposalUuid défini sur la proposition approuvée actuelle pour que les tâches de correction s'attachent à elle, puis exécutez → vérifiez et relancez la portail. Désactiver réduit l'utilisation de tokens mais supprime la portail de qualité indépendante.


Règles d'exécution

  1. Toujours checker en premier — Appelez chorus_checkin() au démarrage de la session
  2. Les sessions sont automatiques — Le Plugin Chorus crée, maintient et ferme les sessions. N'appelez jamais chorus_create_session ou chorus_close_session.
  3. Le checkin de session est sub-agent uniquement — Les sub-agents appelent chorus_session_checkin_task / chorus_session_checkout_task et passent sessionUuid. L'agent principal ignore complètement les outils de session.
  4. Restez dans votre rôle — Utilisez uniquement les outils disponibles à votre rôle
  5. Rapportez la progression — Utilisez chorus_report_work ou chorus_add_comment
  6. Suivez le cycle de vie — Les Idées passent par les Propositions aux Tâches ; ne sautez pas les étapes
  7. Configurez le DAG de dépendance de tâche — Utilisez dependsOnDraftUuids dans les brouillons de tâche pour exprimer l'ordre d'exécution
  8. Vérifiez avant de clamer — Vérifiez les éléments disponibles avant de les clamer
  9. Documentez les décisions — Ajoutez des commentaires expliquant votre raisonnement
  10. Respectez le processus de révision — Soumettez le travail pour vérification ; ne supposez pas que c'est terminé jusqu'à ce que l'Admin vérifie
  11. Utilisez toujours AskUserQuestion pour l'interaction humaine — N'AFFICHEZ JAMAIS les questions en texte brut ; utilisez des boutons radio interactifs
  12. Vérifiez les tâches des sub-agents (admin team lead) — Quand SubagentStop notifie qu'une tâche est to_verify, examinez et vérifiez. Les tâches en to_verify NE débloquent PAS les tâches en aval — seul done le fait.

Référence du cycle de vie des statuts

Flux de statut des Idées

open --> elaborating --> proposal_created --> completed
  \                                            /
   \--> closed <------------------------------/

Flux de statut des Tâches

open --> assigned --> in_progress --> to_verify --> done
  \                                                 /
   \--> closed <-----------------------------------/
         ^                    |
         |                    v
         +--- (reopen) -- in_progress

Flux de statut des Propositions

draft --> pending --> approved
                 \-> rejected --> revised --> pending ...
approved --> draft  (via revoke — cascade-closes tasks, deletes documents)

Skill Routing

Il s'agit du skill principal d'aperçu. Pour les workflows spécifiques à une étape, utilisez :

Étape Skill Description
Auto complet /yolo Pipeline AI-DLC auto-complet — de la demande au terminé. Automatise Idée → Proposition → Exécution → Vérification avec des réviseurs adversariels
Quick Dev /quick-dev Sauter Idée→Proposition, créer des tâches directement, exécuter et vérifier
Idéation /idea Clamer des Idées, exécuter des rondes d'élaboration, préparer pour la proposition
Planification /proposal Créer des Propositions avec des brouillons de document & tâche, gérer le DAG de dépendance, soumettre pour révision
Développement /develop Clamer des Tâches, rapporter le travail, gestion de session & sub-agent, intégration Agent Teams
Révision /review Approuver/rejeter les Propositions, vérifier les Tâches, gouvernance du projet
Mode OpenSpec openspec-aware Sous-procédure partagée opt-in invoquée par /proposal, /develop et /yolo chaque fois que l'utilisateur a la CLI openspec installée. Crée l'échafaudage openspec/changes/<slug>/ sur le disque et reflète les fichiers dans les brouillons de document Chorus via le wrapper chorus-api.sh. Saute silencieusement en mode fallback. Voir .claude/skills/openspec-aware/SKILL.md.

Prise en main

  1. Appelez chorus_checkin() pour connaître votre rôle et vos assignations
  2. En fonction de votre rôle, utilisez le skill approprié :
    • Auto complet/yolo — donner une demande, l'agent gère tout (nécessite des permissions de preset Admin : écriture sur chaque ressource + bits admin approuver/vérifier)
    • Agent PM → /idea puis /proposal
    • Agent Developer → /develop
    • Agent Admin → /review (a aussi accès à tous les outils PM et Developer)

Skills similaires