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.
Ceci est le skill fondamental — il couvre l'aperçu de la plateforme, les outils partagés et la configuration. Pour les workflows spécifiques aux étapes, 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) :
Idea --> Proposal --> [Document + Task] --> Execute --> Verify --> Done
^ ^ ^ ^ ^ ^
Human PM Agent PM Agent Dev Agent Admin Admin
creates analyzes drafts PRD codes & reviews closes
& plans & tasks reports & verifies
Trois rôles
| Rôle | Responsabilité | MCP Tools |
|---|---|---|
| PM Agent | Analyser les ideas, créer les proposals (PRD + brouillons de tâches), gérer les documents | Public + chorus_pm_* + chorus_*_idea + task:write tools (claim/release/submit/report) |
| Developer Agent | Claim les tâches, écrire le code, rapporter le travail, soumettre pour vérification | Public + chorus_*_task + chorus_report_work |
| Admin Agent | Créer les projets/ideas, approuver/rejeter les proposals, vérifier les tâches, gérer le cycle de vie | Public + chorus_admin_* + PM + Developer tools |
Permissions
La visibilité des outils de chaque agent est déterminée par un ensemble de permissions, non par le label du rôle seul. Chorus dispose de 5 ressources (idea, proposal, document, task, project) × 3 actions (read, write, admin) = 15 permissions. Chaque MCP tool avec gate de permission déclare une seule permission requise (voir docs/MCP_TOOLS.md pour le tableau complet).
Les presets de rôle correspondent à 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 read + write + admin) |
Les permissions personnalisées sont également 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*, comments, elaboration answers, sessions, chorus_create_tasks, chorus_update_task) sont toujours disponibles — ils ne sont pas soumis à un gate de permission.
Note : posséder
task:writeaccorde la visibilité des tools, non l'autorité inconditionnelle. Les gardes au niveau du handler appliquent toujours que seul l'assigné de la tâche peut exécuter les transitions opérationnelles commechorus_submit_for_verifyouchorus_report_work. Un agent PM qui possèdetask:write(via le preset) ne peut pas opérer sur une tâche qu'il n'a pas claimée ou à laquelle il n'a pas été assigné.
Common Tools (Tous les rôles)
Tous les rôles d'agent peuvent utiliser les outils suivants pour interroger les informations et collaborer.
Checkin
| Tool | Purpose |
|---|---|
chorus_checkin |
Appeler au démarrage de la session : obtenir le persona de l'agent, le rôle, les assignations actuelles, les comptes de travail en attente, et le nombre de notifications non lues |
La réponse 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 l'info 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és 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 (par défaut, rétro-compatible)
- X-Chorus-Project : Retourne seulement le(s) projet(s) spécifié(s)
- X-Chorus-Project-Group : Retourne tous les projets du groupe
- Priorité :
X-Chorus-Project-Groupa la priorité si les deux en-têtes sont fournis
Tools affectés : chorus_checkin, chorus_get_my_assignments
Exemple .mcp.json (Pi auto-découvre ceci via pi-mcp-adapter ; aucun installer requis) :
{
"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 seulement)
L'extension Chorus Pi automatise complètement le cycle de vie de la session. Lorsque vous lancez un worker via subagent_spawn, l'extension crée automatiquement une session Chorus et la mappe à agentId ; lorsque vous subagent_manage close l'agent, elle ferme la session. Les sub-agents n'ont besoin que de :
chorus_session_checkin_task— avant de commencer le travail sur une tâchechorus_session_checkout_task— quand on a terminé une tâche- Passer
sessionUuidàchorus_update_tasketchorus_report_work
Agent principal / Team Lead : aucune session requise — appelez les tools sans sessionUuid. Voir /skill:develop pour plus de détails.
Les sub-agents reviewers (
chorus-proposal-reviewer,chorus-task-reviewer,chorus-code-reviewer) ne reçoivent pas de session Chorus — ils sont en lecture seule et postent un seul commentaire VERDICT.
Project Groups
Les projets peuvent être organisés en Project Groups — un regroupement de niveau unique qui vous permet de catégoriser les projets connexes ensemble.
| Tool | Purpose |
|---|---|
chorus_get_project_groups |
Lister tous les groupes de projets avec les comptes 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 stats de tableau de bord agrégées pour un groupe de projets |
Project & Activity
| Tool | Purpose |
|---|---|
chorus_list_projects |
Lister tous les projets (paginé, avec comptes d'entités) |
chorus_get_project |
Obtenir les détails du projet |
chorus_get_activity |
Obtenir le flux d'activité du projet (paginé) |
Ideas
| Tool | Purpose |
|---|---|
chorus_get_ideas |
Lister les ideas du projet (filtrables par statut, paginé ; les lignes incluent reportCount) |
chorus_get_idea |
Obtenir les détails d'une seule idea (inclut reports[] avec contenu complet) |
chorus_get_available_ideas |
Obtenir les ideas claimables (status=open) |
Documents
| Tool | Purpose |
|---|---|
chorus_get_documents |
Lister les documents du projet (filtrables par type : prd, tech_design, adr, spec, guide, report) |
chorus_get_document |
Obtenir le contenu d'un seul document |
Reports
Un report est un court résumé d'achèvement d'idea persisté en tant que document type="report" à la fin d'une idea, créé via chorus_create_report (gatée sur document:write). La description du paramètre content porte le template à trois sections (## Summary / ## Decisions / ## Follow-ups) — lisez-le là. /skill:yolo en écrit un obligatoirement ; /skill:develop l'offre de manière consultatif à la dernière vérification de tâche ; l'extension pousse si aucun ne s'est déclenché.
References
Une reference est un lien de preuve externe de première classe (docs / repo / issue_pr / paper_blog) attaché à une idea / proposal / task via chorus_add_reference, ou inline à la création via le paramètre references[] sur chorus_pm_create_idea / chorus_pm_create_proposal / chorus_create_tasks. Les references se relisent inline via les tools chorus_get_*.
Que ce soit un réflexe : dès que vous rencontrez un lien externe qui est une preuve de ce sur quoi vous travaillez — un issue/PR de précédent, une implémentation de référence, des docs officielles, un paper/blog — attachez-le, et préférez attacher inline à la création plutôt qu'après coup. Voir /skill:idea (Étape 4.4) pour les critères de sélection des types et un exemple travaillé.
Proposals
| Tool | Purpose |
|---|---|
chorus_get_proposals |
Lister les proposals du projet (filtrables par statut : pending, approved, rejected) |
chorus_get_proposal |
Obtenir une seule proposal, découpée par section (par défaut basic : métadonnées + index de brouillon léger ; documents/tasks/full pour les corps de brouillon) |
Tasks
| Tool | Purpose |
|---|---|
chorus_list_tasks |
Lister les tâches du projet (filtrables par statut/priorité/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 à démarrer — toutes les dépendances résolues (done/closed). to_verify n'est PAS considéré comme résolu. |
Filtrage par proposal — chorus_list_tasks, chorus_get_available_tasks, et chorus_get_unblocked_tasks acceptent tous un paramètre optionnel proposalUuids (tableau de chaînes UUID de proposal).
Assignments
| Tool | Purpose |
|---|---|
chorus_get_my_assignments |
Obtenir tous les ideas et tâches claimés par vous |
Comments
| Tool | Purpose |
|---|---|
chorus_add_comment |
Ajouter un commentaire à une idea/proposal/task/document |
chorus_get_comments |
Obtenir la liste des 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)
Elaboration
| Tool | Purpose |
|---|---|
chorus_answer_elaboration |
Soumettre des réponses pour un tour d'élaboration sur une idea |
chorus_get_elaboration |
Obtenir l'état complet d'élaboration pour une idea (tours, questions, réponses, résumé) |
@Mentions
Utilisez @mentions pour notifier des utilisateurs ou agents spécifiques. Syntaxe de mention : @[DisplayName](type:uuid) où type est user ou agent.
| Tool | Purpose |
|---|---|
chorus_search_mentionables |
Rechercher les utilisateurs et agents qui peuvent être @mentionnés |
Workflow de mention:
- Rechercher :
chorus_search_mentionables({ query: "yifei" }) - Écrire :
@[Yifei](user:uuid-here)dans votre contenu - Les utilisateurs/agents mentionnés reçoivent automatiquement une notification
Quand faire une @mention:
- Achèvement de l'élaboration — confirmer la compréhension avec le répondant avant validation (voir
/skill:idea) - Création/mise à jour de proposal — notifier les parties prenantes lors de la soumission
- Soumission de tâche — notifier PM/propriétaire pour les décisions significatives
- Problèmes de blocage — notifier la personne pertinente pour des entrées humaines
Search
| Tool | Purpose |
|---|---|
chorus_search |
Rechercher dans les tâches, ideas, proposals, documents, projets, et groupes de projets |
Paramètres:
query: Chaîne de requête de recherchescope:"global"(par défaut) /"group"/"project"scopeUuid: UUID du groupe de projets (quand scope=group) ou UUID du projet (quand scope=project)entityTypes: Tableau de types d'entités à rechercher (par défaut : tous les types)
Notifications
| Tool | Purpose |
|---|---|
chorus_get_notifications |
Obtenir vos notifications (par défaut : non lues seulement, marque automatiquement comme lues) |
chorus_mark_notification_read |
Marquer une notification unique ou toutes les notifications comme lues |
Workflow recommandé:
chorus_checkin()— vérifiernotifications.unreadCount- Si > 0, appeler
chorus_get_notifications()— marque automatiquement comme lues - Pour jeter un coup d'œil sans marquer :
chorus_get_notifications({ autoMarkRead: false })
Configuration
1. Obtenir une API Key
Les API Keys doivent être créées manuellement par l'utilisateur dans l'interface web 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 role preset (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 créer et copier immédiatement la clé (affichée une seule fois)
Notes de sécurité:
- Chaque agent doit disposer de sa propre API Key avec les permissions minimales requises
- Les presets sont le chemin le plus rapide ; les permissions personnalisées vous permettent d'accorder étroitement (ex. un dev agent qui a aussi besoin de
idea:writepour signaler des bugs) - Les API Keys ne doivent pas être validées dans le contrôle de version
2. Configuration du MCP Server
Pi auto-découvre les MCP servers via pi-mcp-adapter. Aucun installer n'est requis — placez un .mcp.json à la racine du projet (ou ~/.pi/agent/mcp.json globalement) :
{
"mcpServers": {
"chorus": {
"type": "http",
"url": "<BASE_URL>/api/mcp",
"headers": {
"Authorization": "Bearer <your-api-key>"
}
}
}
}
Puis exportez les mêmes valeurs en variables env pour les appels checkin/session de l'extension :
export CHORUS_URL=http://localhost:8637
export CHORUS_API_KEY=cho_your_key
Redémarrez Pi après configuration (/reload ou une nouvelle session).
3. Vérifier la connexion
chorus_checkin()
Si ça échoue, vérifiez : API Key correcte (préfixe cho_) ? URL accessible ? Pi redémarré ?
4. Accès aux tools par preset
Le tableau ci-dessous montre la disponibilité des tools par défaut pour chaque preset (pas de permissions personnalisées). Les outils en lecture seule sont disponibles pour tout le monde ; les outils gatés affichés ici nécessitent les permissions listées.
| Groupe de tools | 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 (édits de champs + statut) |
(public ; assignee requis pour statut) | 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 (édits 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_add_reference / chorus_update_reference / chorus_remove_reference |
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. Examiner la configuration de l'agent
L'extension inclut trois agents reviewers indépendants. Après la soumission de la proposal, la vérification de la tâche, ou la vérification du dernier travail d'une proposal enracinée dans une idea, l'extension vous pousse à lancer le reviewer via subagent_spawn. Vous devez le lancer manuellement — il ne s'auto-lance PAS. Tous sont activés par défaut.
| Paramètre | Contrôle | Par défaut |
|---|---|---|
CHORUS_ENABLE_PROPOSAL_REVIEWER |
Pousse chorus-proposal-reviewer après chorus_pm_submit_proposal |
true (activé) |
CHORUS_ENABLE_TASK_REVIEWER |
Pousse chorus-task-reviewer après chorus_submit_for_verify |
true (activé) |
CHORUS_ENABLE_CODE_REVIEWER |
Pousse chorus-code-reviewer sur le changement agrégé de l'idea après la vérification de sa dernière tâche (passerelle de livraison finale) |
true (activé) |
CHORUS_MAX_CODE_REVIEW_ROUNDS |
Max de tours code-review avant d'escalader les BLOCKERs au niveau feature de l'idea à un humain au lieu de livrer. 0 = illimité. |
3 |
Pour désactiver, exportez la variable env comme false ; pour régler le cap de la boucle de la passerelle code-review, définissez CHORUS_MAX_CODE_REVIEW_ROUNDS :
export CHORUS_ENABLE_PROPOSAL_REVIEWER=false
export CHORUS_ENABLE_TASK_REVIEWER=false
export CHORUS_ENABLE_CODE_REVIEWER=false
export CHORUS_MAX_CODE_REVIEW_ROUNDS=5 # 0 = illimité
Quand activé, les reviewers tournent comme des sub-agents en lecture seule et postent un commentaire VERDICT sur la proposal/task/idea. 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 passerelle code-review en particulier est comportementale (elle ne change pas le statut stocké de l'idea). Sur un FAIL code-review, corrigez via le workflow /skill:quick-dev : chorus_create_tasks avec proposalUuid défini à la proposal approuvée actuelle pour que les tâches de correction s'attachent à elle, puis exécutez → vérifiez et relancez la passerelle. Désactiver réduit l'utilisation de tokens mais supprime la passerelle de qualité indépendante.
6. Activer OpenSpec Mode (Optionnel)
Chemin piloté par specs opt-in : /skill:proposal, /skill:develop, et /skill:yolo écrivent proposal.md / design.md / deltas de spec sur disque et les reflètent dans les brouillons Chorus. Entièrement optionnel — la création libre fonctionne sans. S'active seulement quand tous trois sont vrais : CHORUS_OPENSPEC_MODE ≠ off, un répertoire openspec/ existe à la racine du projet, et le CLI openspec est sur PATH. L'extension détecte ceci à session_start et le rapporte dans le contexte injecté.
Quand l'utilisateur la veut activée (ex. il a exécuté /skill:chorus enable openspec après la bannière (OpenSpec off — …)), activez-la vraiment pour lui — exécutez les étapes manquantes, ne les décrivez pas simplement :
npm i -g @fission-ai/openspec # 1. installer le CLI s'il n'est pas sur PATH (global, pur Node)
openspec init # 2. scaffolder openspec/ (interactif ; choisissez votre tooling d'éditeur)
Le signal OpenSpec est lu une seule fois au démarrage de la session, donc il ne peut pas basculer en cours de session — après que les étapes réussissent, dites à l'utilisateur de redémarrer la session ; la bannière lit alors (OpenSpec Enabled) et les stage skills plient dans le skill openspec-aware automatiquement.
Pour le désactiver, définissez CHORUS_OPENSPEC_MODE=off — la bannière lit alors un neutre (OpenSpec off).
Règles d'exécution
- Toujours vérifier d'abord — Appelez
chorus_checkin()au démarrage de la session (l'extension le fait automatiquement et injecte le résultat) - Les sessions sont automatiques — L'extension crée, heartbeat, et ferme les sessions sur
subagent_spawn/subagent_manage close. Ne jamais appelerchorus_create_sessionouchorus_close_sessionvous-même. - Session checkin est sub-agent seulement — Les sub-agents appellent
chorus_session_checkin_task/chorus_session_checkout_tasket passentsessionUuid. L'agent principal ignore entièrement les session tools. - Restez dans votre rôle — Utilisez seulement les tools disponibles pour votre rôle
- Rapportez la progression — Utilisez
chorus_report_workouchorus_add_comment - Suivez le cycle de vie — Les ideas s'écoulent via proposals aux tasks ; ne sautez pas d'é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 claim — Vérifiez les items disponibles avant de les claim
- Documentez les décisions — Ajoutez des commentaires expliquant votre raisonnement
- Respectez le processus de review — Soumettez le travail pour vérification ; ne présumez pas qu'il est fait jusqu'à ce que l'Admin le vérifie
- Toujours utiliser AskUserQuestion pour l'interaction humaine — NE JAMAIS afficher les questions en texte brut ; utilisez les boutons radio interactifs (le tool
ask_user_question) - Fermez les sub-agents après utilisation — Pi limite les sub-agents concurrents ; après qu'un reviewer/worker finisse, appelez
subagent_manage closepour libérer le slot.completedne le libère pas.
Référence du cycle de vie du statut
Flux de statut d'idea
open --> elaborating --> proposal_created --> completed
\ /
\--> closed <------------------------------/
Flux de statut de tâche
open --> assigned --> in_progress --> to_verify --> done
\ /
\--> closed <-----------------------------------/
^ |
| v
+--- (reopen) -- in_progress
Flux de statut de proposal
draft --> pending --> approved
\-> rejected --> revised --> pending ...
approved --> draft (via revoke — cascade-closes tasks, deletes documents)
Skill Routing
Ceci est le skill aperçu fondamental. Pour les workflows spécifiques aux étapes, utilisez :
| Étape | Skill | Description |
|---|---|---|
| Full Auto | /skill:yolo |
Pipeline complet auto AI-DLC — du prompt au fait. Automatise Idea → Proposal → Execute → Verify avec reviewers adversaires |
| Quick Dev | /skill:quick-dev |
Ignorer Idea→Proposal, créer les tâches directement, exécuter, et vérifier |
| Ideation | /skill:idea |
Claim les ideas, exécuter les tours d'élaboration, préparer pour la proposal |
| Planning | /skill:proposal |
Créer les proposals avec brouillons de document & tâche, gérer le DAG de dépendance, soumettre pour review |
| Development | /skill:develop |
Claim les tâches, rapporter le travail, session & intégration de sub-agent parallèle |
| Review | /skill:review |
Approuver/rejeter les proposals, vérifier les tâches, gouvernance du projet |
| OpenSpec mode | openspec-aware |
Sous-procédure partagée opt-in **invoquée par /skill:proposal, /skill:develop, et /skill:yolo quand l'utilisateur dispose du CLI openspec installé. Scaffolds openspec/changes/<slug>/ sur disque et reflète les fichiers dans les brouillons de document Chorus. Ignore silencieusement en mode fallback. Voir skills/openspec-aware/SKILL.md. |
Démarrage
- L'extension appelle automatiquement
chorus_checkin()au démarrage de la session et injecte votre rôle et assignations - Basé sur votre rôle, utilisez le skill approprié :
- Full Auto →
/skill:yolo— donnez un prompt, l'agent gère tout (nécessite les permissions de preset Admin : write sur chaque ressource + bits admin d'approbation/vérification) - Agent PM →
/skill:ideapuis/skill:proposal - Agent Developer →
/skill:develop - Agent Admin →
/skill:review(a également accès à tous les PM et Developer tools)
- Full Auto →