Épics, stories et tâches
Créer, activer, faire avancer et clore le travail, phase OPALE comprise.
epic_activate
effortless_epic_activate — Stabilité : beta · projet
Active un épic existant sans passer par une story. Refuse par son nom un épic inconnu ou terminé et n'en crée aucun : pour cela, utiliser effortless_epic_start. Vide la story active, puisqu'un épic qu'on vient d'activer n'en a aucune en cours. Idempotent.
« Réactive l'épic 012 comme épic de travail. »
| Nom | Type | Requis | Description |
|---|---|---|---|
epic_id | string | oui | Id de l'epic EXISTANT à activer (aucune cible implicite). Obligatoire. |
epic_complete
effortless_epic_complete — Stabilité : stable · projet
Clôture un epic : chacune de ses stories doit être Done ou remplacée (une story en cours ou suspendue bloque, refus nommé). La clôture ne résout aucune évolution : celles qui restent En cours sont nommées dans evolutions_maintained. Défaut : epic actif.
« Clos l'épic 012, toutes ses stories sont terminées. »
| Nom | Type | Requis | Description |
|---|---|---|---|
epic_id | string | non | Id de l'epic à clôturer (défaut : epic actif). |
epic_start
effortless_epic_start — Stabilité : stable · projet
Crée (et optionnellement active) un epic dans une zone fonctionnelle. Renvoie l'id.
« Crée un épic « Refonte de l'export » dans la zone « rapports » et active-le. »
| Nom | Type | Requis | Description |
|---|---|---|---|
zone | string | oui | Zone fonctionnelle de l'epic. Obligatoire. |
title | string | oui | Titre de l'epic. Obligatoire. |
description | string | non | Description de l'epic (optionnelle). |
activate | boolean | non | Si true (défaut), l'epic créé devient l'epic actif et le pointeur de story active est vidé ; false se contente de le créer. |
phase_eligibility
effortless_phase_eligibility — Stabilité : stable · projet
Vérifie l'éligibilité au passage à la phase OPALE suivante (lecture seule).
« Suis-je éligible pour passer à la phase suivante ? »
effortless_phase_eligibilityAucun paramètre.
phase_next
effortless_phase_next — Stabilité : stable · story
Fait avancer le projet à la phase OPALE suivante (horodatage serveur).
« Passe le projet à la phase suivante. »
effortless_phase_nextAucun paramètre.
story_activate
effortless_story_activate — Stabilité : stable · story
Active une story existante (statut Doing), en rouvrant son epic si besoin.
« Reprends la story 003 de l'épic 012. »
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | oui | Id de la story à activer. Obligatoire. |
epic_id | string | non | Epic parent de la story (défaut : résolu automatiquement). |
story_archive
effortless_story_archive — Stabilité : beta · story
Archive une story déjà terminée et ferme la transaction de ses contrats d'acte : le dossier .effortless/crew_contracts/<épic>/<story>/ est détruit. Refuse une story qui n'est pas terminée. Idempotent. Par défaut : la story active.
« Archive la story 003, elle est terminée. »
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | non | Id de la story à archiver ; elle doit être Done (défaut : story active). |
story_complete
effortless_story_complete — Stabilité : stable · story
Clôture une story : elle doit avoir au moins une tâche, et toutes doivent être Done (sinon refus nommé). Idempotent. Défaut : story active.
« Clos la story active, toutes ses tâches sont faites. »
effortless_story_complete| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | non | Id de la story à clôturer (défaut : story active). |
story_items
effortless_story_items — Stabilité : stable · story
Liste les items (décisions, questions, tâches) d'une story donnée.
« Montre-moi les décisions, questions et tâches de la story 003 de l'épic 012. »
| Nom | Type | Requis | Description |
|---|---|---|---|
epic_id | string | oui | Id de l'epic qui porte la story. Obligatoire. |
story_id | string | oui | Id de la story dont on liste les décisions, questions et tâches. Obligatoire. |
story_objective
effortless_story_objective — Stabilité : beta · story
Pose ou corrige l'objectif d'une story (une ou deux phrases), montré par le backlog à la sélection. Chaîne vide : le retire.
« Pose l'objectif de la story 003 : « Exporter les rapports mensuels en CSV sans perdre les accents. » »
effortless_story_objectivestory_id=003objective=Exporter les rapports mensuels en CSV sans perdre les accents.
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | oui | Id de la story visée. Obligatoire. |
objective | string | oui | Nouvel objectif, une ou deux phrases ; une chaîne vide le retire. Obligatoire. |
epic_id | string | non | Epic parent de la story (défaut : résolu automatiquement). |
story_pause
effortless_story_pause — Stabilité : beta · story
Suspend une story : pose le statut Suspendu, date la pause, exige un motif et libère le pointeur de story active. Ne touche à aucune tâche, la reprise retrouve l'atelier tel qu'il a été laissé. Refuse une story terminée et un motif vide. Idempotent. Reprise par effortless_story_activate.
« Mets la story 003 en pause, motif : on attend la réponse du client sur le format. »
effortless_story_pausestory_id=003reason=On attend la réponse du client sur le format.
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | non | Id de la story à suspendre (défaut : story active). |
reason | string | oui | Motif de la suspension, consigné pour le prochain lecteur ; un motif vide est refusé. Obligatoire. |
story_reloop
effortless_story_reloop — Stabilité : stable · story
Reboucle la story active vers une phase OPALE antérieure (rewind du cadrage).
« Reboucle la story active vers la phase de cadrage, le besoin a changé. »
| Nom | Type | Requis | Description |
|---|---|---|---|
target_phase | string | oui | Id de la phase OPALE vers laquelle rebobiner la story active ; elle doit précéder la phase courante (workflow par défaut : O-analyse, P-cadrage, A-specs, L-plan, E-execute). Obligatoire. |
story_retire
effortless_story_retire — Stabilité : beta · story
Retire une story NON COMMENCÉE, avec son motif (obligatoire) : statut Retired, elle cesse de bloquer la clôture de l'épic et peut être archivée, mais n'est jamais comptée comme livrée. Refuse une story déjà close, un motif vide, et une story dont une tâche est déjà Done (story_complete ou story_supersede alors).
« Retire la story 007 : la fonctionnalité est abandonnée. »
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | oui | Story à retirer (non commencée : aucune tâche Done). |
reason | string | oui | Pourquoi elle ne sera pas faite — obligatoire. |
story_start
effortless_story_start — Stabilité : stable · story
Crée (et optionnellement active) une story dans un epic. Renvoie l'id créé. kind : opale (défaut, avec cadrage) ou fix (correctif direct : aucun cadrage, ouverte d'emblée en phase d'exécution).
« Crée une story « Corriger l'accent dans l'export » de type correctif dans l'épic 012 et active-la. »
effortless_story_startepic_id=012title=Corriger l'accent dans l'exportkind=fixactivate=true
| Nom | Type | Requis | Description |
|---|---|---|---|
epic_id | string | non | Epic qui reçoit la story (défaut : epic actif). |
title | string | oui | Titre de la story. Obligatoire. |
slug | string | non | Slug explicite (défaut : dérivé du titre). |
zone | string | non | Zone fonctionnelle de la story (défaut : la zone de l'epic parent). |
depends_on | array<string> | non | Ids dont dépend la story (défaut aucun). |
activate | boolean | non | Si true, active immédiatement la story créée ; défaut false. |
kind | string | non | Type de story : opale (défaut), ou fix pour un correctif direct qui saute les documents de cadrage et démarre en phase d'exécution. |
taskless_reason | string | non | Motif pour lequel cette story n'aura AUCUNE tâche (cadrage pur, jalon, décision) ; le renseigner lève le drapeau taskless, et l'audit cesse de compter la story comme un oubli. |
objective | string | non | Objectif de la story en une ou deux phrases, montré par le backlog quand on la sélectionne. |
story_supersede
effortless_story_supersede — Stabilité : beta · story
Marque une story remplacée par une autre du même épic : elle ne bloque plus la clôture de l'épic, n'est pas comptée comme livrée.
« La story 004 est remplacée par la 006 : marque-la comme remplacée. »
| Nom | Type | Requis | Description |
|---|---|---|---|
story_id | string | oui | Id de la story remplacée, qui ne sera jamais livrée ; une story déjà close est refusée. Obligatoire. |
by | string | oui | Id de la story qui a porté le travail à sa place, dans le même epic. Obligatoire. |
task_add
effortless_task_add — Stabilité : stable · story
Ajoute une tâche (statut Todo) à une story. Renvoie l'id (TSK-NN). stack : normes de développement qui s'appliquent à la tâche (refusé si une norme n'existe pas). Classement de routage optionnel dès la création (complexity, capability_tier, effort_level), relisible via effortless_task_route_show.
« Ajoute une tâche « Écrire les tests du parseur » à la story active. »
| Nom | Type | Requis | Description |
|---|---|---|---|
title | string | oui | Titre de la tâche. Obligatoire. |
description | string | non | Description de la tâche (défaut vide). |
phase | string | non | Phase OPALE de la tâche, sous forme d'id de phase du workflow (défaut : la phase courante de la story). |
epic_id | string | non | Epic visé (défaut : epic actif). |
story_id | string | non | Story visée (défaut : story active). |
stack | array<string> | non | Normes de développement qui s'appliquent à la tâche, nommées comme les dossiers de .ai/ndd/ (par exemple ["rust", "tauri"]) ; l'agent ne reçoit que celles-ci. Une norme inexistante est refusée. |
complexity | string | non | Complexité de la tâche : simple ou complex. |
capability_tier | string | non | Palier de capacité pour le routage : deep, standard ou light. |
effort_level | string | non | Effort demandé pour le routage : low, medium ou high. |
task_update
effortless_task_update — Stabilité : stable · story
Corrige le statut (Todo / Doing / Done), le titre, la description et/ou le résultat d'une tâche. Au moins un champ est exigé. Passer à Doing est refusé tant que le cadrage de la story est inachevé ou qu'une tâche dont celle-ci dépend n'est pas Done.
« Passe la tâche TSK-02 de la story 003 de l'épic 012 à Doing. »
| Nom | Type | Requis | Description |
|---|---|---|---|
epic_id | string | oui | Id de l'epic qui porte la tâche. Obligatoire. |
story_id | string | oui | Id de la story qui porte la tâche. Obligatoire. |
task_id | string | oui | Id de la tâche à modifier (par exemple TSK-01). Obligatoire. |
status | string | non | Nouveau statut : Todo, Doing ou Done ; au moins un champ à modifier est requis. |
title | string | non | Nouveau titre de la tâche. |
description | string | non | Nouvelle description (l'objectif de la tâche) ; une chaîne vide la retire. |
result | string | non | Ce que la tâche a produit, constaté (fichiers, verbes, mesures) ; une chaîne vide le retire. |