Import a BMAD sprint tracker into OrgGen
BMAD v6.12.1 still writes `sprint-status.yaml`: that file, and only that one, is what OrgGen reads as is. For any other tracking file — `stories.yaml` included — the path goes through OrgGen's own format. This guide says where the boundary lies and what the plan returns.
The full text of this guide currently exists in French only. The title and summary above are translated.
Ce que lit OrgGen : `sprint-status.yaml`
OrgGen lit le fichier `sprint-status.yaml` que le workflow de planification de sprint de BMAD génère et que les workflows de build et de rétrospective mettent à jour — BMAD v6.12.1 (dépôt bmad-code-org/BMAD-METHOD, lu le 2026-10-07). Il lit la clé `development_status` et, s'il existe, `action_items`.
development_status:
epic-1: in-progress
1-1-user-authentication: done
2-6a-split-story: backlog
epic-1-retrospective: optionalLes deux voies d’import
Les deux voies mènent au même plan, au même rejeu et à la même annulation. Elles diffèrent par ce qu'OrgGen lit, et par l'endroit où les tâches se rangent.
- Voie 1 — le fichier est lu tel quel. Pour : `sprint-status.yaml`. Ton agent appelle `import_tasks` avec `format: "bmad-sprint-status"` et le fichier dans `text`. Les tâches se rangent dans UN bloc d’accueil, désigné par `cellRef` ou `cellId` ; les épiques deviennent des tâches parentes, avec leur statut. Un fichier mal formé est refusé, nommé, et rien n'est écrit.
- Voie 2 — le format d'OrgGen. Pour : tout autre suivi, `stories.yaml` compris, ou un fichier que tu as converti. Ton agent extrait et mappe lui-même, puis appelle `import_tasks` avec `items` (ressource `orggen://import/pivot`). Un bloc par item : chaque item porte son propre `cellRef`. Un item invalide est refusé, nommé, avec ceux qui le référencent ; rien n'est écrit pour lui.
`stories.yaml` (l'étape optionnelle de BMAD, sans statut) et `tickets.toml` ne sont pas lus par OrgGen : ils passent par la seconde voie.
Ce que chaque clé devient
| Dans `sprint-status.yaml` | Dans OrgGen |
|---|---|
| `epic-1` | une tâche PARENTE `epic-1` (étiquette `epic`), avec son statut : backlog → à faire, in-progress → en cours, done → fait |
| `1-1-user-authentication` | une sous-tâche d’identité `1-1-user-authentication` (la clé que les workflows BMAD retrouvent), titre « 1.1 User authentication » |
| `2-6a-split-story` | une story SCINDÉE : lue de même, titre « 2.6a Split story » |
| statut d’une story | backlog → à faire ; ready-for-dev → à faire + étiquette `ready-for-dev` ; in-progress → en cours ; review → en cours + étiquette `review` ; done → fait |
| `epic-1-retrospective` | une sous-tâche (`optional` → étiquette `optional`) |
| `action_items[]` | une sous-tâche par action `epic-N-action-<empreinte du texte>`, responsable = `owner` |
Les statuts hérités de la v6, que BMAD normalise lui-même à chaque lecture, sont normalisés de la même façon : `drafted` est lu comme `ready-for-dev` et `contexted` comme `in-progress`, pour les épiques comme pour les stories. La valeur lue est déclarée dans les notes du plan, jamais transformée en silence.
Le geste, dans l’ordre
- Tu colles le `sprint-status.yaml` à ton agent — le chat d'OrgGen, ou un client MCP qui envoie une clé d'API — et tu désignes le bloc d'accueil.
- Il appelle `import_tasks` avec `format: "bmad-sprint-status"`. Par défaut c'est un calcul : le plan est rendu (créées, mises à jour, ignorées, conflits, erreurs) sans rien écrire.
- Ton agent a pour consigne de te montrer ce plan. Lis les notes : elles disent ce qui a été lu sans être importé.
- Rien ne s'écrit sans un second appel explicite, avec `dryRun: false` et le même lot. L'agent garde l'`importId` rendu.
- Un doute après coup : `list_imports` retrouve le lot, `rollback_import` l'annule — d'abord à blanc.
Rejouer, mettre à jour, annuler
- Rejouer ne duplique jamais : la clé d'une story EST son identifiant externe, stable tant que la story n'est pas renommée. Recoller le fichier après une session de travail ne crée que ce qui est neuf.
- Avec `onExisting: "update"`, les statuts qui ont avancé dans BMAD sont réécrits — seulement si personne n'a modifié la tâche dans OrgGen depuis ; sinon elle sort en conflit, jamais écrasée.
- Annuler un lot supprime ce qu'il a créé et garde ce qu'un humain a modifié. Les mises à jour qu'il a faites ne sont pas restaurées.
- Une tâche terminée garde sa date d'achèvement quand l'export la porte — `sprint-status.yaml` n'en porte pas : la tâche faite prend la date de l'import.
Ce qui ne se transporte pas
- Les métadonnées du fichier (`project`, `story_location`…) et toute clé de premier niveau non reconnue.
- Le contenu des fichiers de story (`docs/stories/*.md`) : le titre d'une story vient de sa clé, jamais d'un fichier.
- Tout autre fichier de suivi BMAD que `sprint-status.yaml` : seul celui-ci est lu, le reste passe par le format d'OrgGen.
Try it on your own case
Describe your situation in one sentence — OrgGen builds the diagram and runs the numbers.
Try it on your own case