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:writeaccorde 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 commechorus_submit_for_verifyouchorus_report_work. Un agent PM qui se trouve avoirtask: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 }ounull— 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-Groupa 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 :
chorus_session_checkin_task— avant de commencer le travail sur une tâchechorus_session_checkout_task— quand ils ont terminé une tâche- Passer
sessionUuidàchorus_update_tasketchorus_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 proposition — chorus_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 ciblecontent: 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 :
- Recherche :
chorus_search_mentionables({ query: "yifei" }) - Écriture :
@[Yifei](user:uuid-here)dans votre contenu - 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 recherchescope:"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é :
chorus_checkin()— vérifiernotifications.unreadCount- Si > 0, appeler
chorus_get_notifications()— marque automatiquement comme lu - 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 :
- Ouvrir la page des paramètres de Chorus (par ex.
http://localhost:8637/settings) - Cliquer sur Create API Key
- 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
- 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:writepour 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
- Toujours checker en premier — Appelez
chorus_checkin()au démarrage de la session - Les sessions sont automatiques — Le Plugin Chorus crée, maintient et ferme les sessions. N'appelez jamais
chorus_create_sessionouchorus_close_session. - Le checkin de session est sub-agent uniquement — Les sub-agents appelent
chorus_session_checkin_task/chorus_session_checkout_tasket passentsessionUuid. L'agent principal ignore complètement les outils de session. - Restez dans votre rôle — Utilisez uniquement les outils disponibles à votre rôle
- Rapportez la progression — Utilisez
chorus_report_workouchorus_add_comment - Suivez le cycle de vie — Les Idées passent par les Propositions aux Tâches ; ne sautez pas les étapes
- Configurez le DAG de dépendance de tâche — Utilisez
dependsOnDraftUuidsdans les brouillons de tâche pour exprimer l'ordre d'exécution - Vérifiez avant de clamer — Vérifiez les éléments disponibles avant de les clamer
- Documentez les décisions — Ajoutez des commentaires expliquant votre raisonnement
- 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
- Utilisez toujours AskUserQuestion pour l'interaction humaine — N'AFFICHEZ JAMAIS les questions en texte brut ; utilisez des boutons radio interactifs
- 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 ento_verifyNE débloquent PAS les tâches en aval — seuldonele 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
- Appelez
chorus_checkin()pour connaître votre rôle et vos assignations - 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 →
/ideapuis/proposal - Agent Developer →
/develop - Agent Admin →
/review(a aussi accès à tous les outils PM et Developer)
- Auto complet →