Aapastech Session Backlog

Chargez TOUJOURS ce skill au début de chaque session et avant toute tâche comportant du travail. Il capture chaque tâche et sous-tâche dans un backlog conservé sur votre ordinateur, avec domaine, estimation et session, et le met à jour à chaque tour pour que rien ne soit oublié dans les sessions longues ou parallèles.

Qu'est-ce que Aapastech Session Backlog ?

Ce skill garantit qu'aucune tâche n'est perdue lors de sessions longues ou multitâches avec des assistants IA. Il maintient un backlog persistant sur l'ordinateur de l'utilisateur, indépendant de la mémoire de la conversation. Chaque tâche doit être dans le backlog pour exister, et chaque tâche dans le backlog doit être marquée comme Terminée ou Abandonnée pour être considérée comme finie. Le skill fonctionne avec tout assistant capable d'exécuter des commandes shell ou d'appeler des outils MCP. Il garantit la confidentialité des données en les stockant localement et en interdisant toute copie vers le cloud. L'utilisateur peut suivre son travail via un tableau HTML local ou des résumés textuels. Le cycle de capture, revendication, mise à jour et clôture garantit une traçabilité complète, même entre sessions parallèles.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/aapastech/claude-skill-session-backlog/tree/HEAD/plugin/skills/session-backlog

Installed? Explore more Productivité et collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Aapastech Session Backlog : ne perdez jamais une tâche

Les sessions longues et les invites multitâches font perdre le fil aux assistants IA. Les premières demandes s'effacent tandis qu'un tour ultérieur se penche sur un détail. Ce skill corrige cela avec un backlog qui vit sur l'ordinateur de l'utilisateur. La mémoire de la conversation n'est pas la source de vérité ; le backlog l'est. Une tâche qui n'est pas dans le backlog n'existe pas, et une tâche dans le backlog n'est pas terminée tant qu'elle n'est pas marquée comme Terminée ou Abandonnée.

Il fonctionne avec tout assistant ou agent capable d'exécuter des commandes shell sur l'ordinateur de l'utilisateur ou d'appeler des outils MCP. Chaque session sur cet ordinateur, depuis n'importe quel outil ou modèle, partage le même backlog.

Règle de confidentialité : les données de tâche restent sur l'appareil qui exécute le travail. Ne copiez jamais le backlog vers un service cloud, une page hébergée, un connecteur ou un document partagé. Si aucun appareil utilisateur n'est accessible, utilisez le mode Hors ligne (section 9) à la place.

1. Trouver le backlog et exécuter le moteur

Si votre liste d'outils contient des outils backlog_* (le serveur MCP, section 11), utilisez-les. Ils correspondent un-à-un aux commandes ci-dessous et gèrent le dossier, l'encodage et les mises à jour pour vous. Sautez le reste de cette section.

Sinon, le backlog est un dossier contenant bl.py (le moteur), config.json, tasks/ (un fichier JSON par tâche), sessions/, board.html et BOARD.md. Cherchez-le dans cet ordre :

  1. Un emplacement que l'utilisateur vous a indiqué, dans ses préférences, sa mémoire ou ses instructions de projet.
  2. La variable d'environnement BACKLOG_DIR, si elle est définie.
  3. ~/Documents/Aapastech-Backlog (le dossier par défaut).
  4. ~/Documents/Claude-Backlog (le nom de dossier utilisé avant la v3 ; continuez à l'utiliser si c'est là que se trouvent les tâches de l'utilisateur).

L'exécuter. Dans ce document, bl <commande> est un raccourci. Tapez toujours la commande complète ; ne la stockez jamais dans une variable shell ($BL … échoue dans zsh, le shell par défaut de macOS).

ShellCommande
macOS / Linux (bash, zsh)python3 ~/Documents/Aapastech-Backlog/bl.py <commande> …
Windows PowerShellpy -3 "$HOME\Documents\Aapastech-Backlog\bl.py" <commande> … (si py est manquant, essayez python)
Windows cmdpy -3 "%USERPROFILE%\Documents\Aapastech-Backlog\bl.py" <commande> …
Git Bash sur Windowspy -3 ~/Documents/Aapastech-Backlog/bl.py <commande> …

bl where affiche le dossier et la version du moteur utilisés. Sur Windows, Documents est souvent déplacé dans OneDrive (%USERPROFILE%\OneDrive\Documents). Si ~\Documents n'existe pas, cherchez là-bas et proposez de définir BACKLOG_DIR pour que chaque session trouve le même dossier.

Python. Le moteur nécessite Python 3.8+ et rien d'autre.

  • macOS : le premier appel à python3 sur un Mac neuf peut ouvrir la boîte de dialogue "installer les outils de développement en ligne de commande" d'Apple. Dites à l'utilisateur que c'est normal et sûr d'accepter, ou installez Python depuis python.org.
  • Windows : Python n'est généralement pas installé. Si py -3 et python échouent tous les deux, demandez à l'utilisateur d'installer Python 3 depuis python.org avec "Ajouter python.exe au PATH" coché, ou winget install Python.Python.3.12. N'utilisez pas d'autre méthode.

2. Premier démarrage sur un appareil (bootstrap)

Si aucun backlog n'existe encore :

  1. Créez le dossier ~/Documents/Aapastech-Backlog (ou l'emplacement choisi par l'utilisateur).
  2. Copiez scripts/bl.py depuis le dossier de ce skill dans ce dossier. C'est un fichier Python unique, ne dépendant que de la bibliothèque standard, avec le tableau intégré.
  3. Posez une question courte à l'utilisateur : quel nom afficher pour les tâches qui l'attendent, et dans quels domaines s'inscrit son travail (3 à 8 domaines, par exemple clients, produits, administration, personnel). Suggérez des domaines à partir de ce que vous savez déjà de lui. Exécutez ensuite : bl init --owner "<nom>" --areas "Domaine1,Domaine2,…,Personnel,IA-Ops" Ajoutez --title "<Titre du tableau>" s'il souhaite un nom de tableau personnalisé (par défaut "Aapastech Backlog").
  4. Dites-lui l'emplacement du tableau : file://…/Aapastech-Backlog/board.html. Proposez de l'ouvrir (bl board --open) et suggérez d'épingler l'onglet.
  5. Suggérez de rendre le skill permanent, par exemple dans les préférences personnelles de l'assistant ou un fichier d'instructions : "Chargez toujours le skill session-backlog au début de chaque session et avant toute tâche comportant du travail."

Mises à jour : si bl version affiche une version inférieure à celle de scripts/bl.py de ce skill (cherchez VERSION = "…"), copiez le nouveau bl.py sur l'ancien. Les données de tâche et la configuration ne sont pas touchées.

3. Identité de session (une fois par session)

Choisissez un identifiant de session stable et réutilisez-le à chaque appel :

  • Si votre plateforme donne un URL ou un id à la session, utilisez-le et transmettez l'URL via --url.
  • Sinon : <surface>-<AAAA-MMJJ-HHMM> en utilisant l'heure de début de session, par ex. desktop-20261018-1652, code-20261018-0910, api-20261018-1200, sched-20261019-0600.
bl session --id <SID> --label "<Surface> · <sujet principal>" --surface code|desktop|cloud|api|scheduled [--url <lien>]

Ceci affiche les tâches ouvertes de la session ainsi que les tâches non réclamées ou périmées d'ailleurs. Mentionnez les tâches en retard ou en attente de l'utilisateur en une ligne. Ne déversez pas toute la liste.

4. La boucle de tour (chaque tour avec du travail)

A. Relecture d'abord. Au début de chaque tour après le premier, exécutez bl open --session <SID>. Faites-le surtout lorsque l'invite est une plongée profonde dans une sous-tâche. Cette étape empêche que d'autres travaux soient oubliés. Ne l'ignorez jamais.

B. Capture avant le travail. Chaque nouvelle demande est capturée en un lot avant que tout travail ne commence. Cela inclut les apartés comme "aussi…", "rappelle-moi…", "plus tard…", "n'oublie pas…". Écrivez le lot dans un fichier JSON avec votre outil d'écriture de fichier, puis transmettez le chemin. Un fichier fonctionne dans tous les shells ; passer du JSON via echo échoue dans les shells Windows et déforme le texte non ASCII.

[
 {"title":"Refondre la page de tarifs","area":"Produit","eta":"1h","priority":"P1",
  "source":"invite 16:52 : refaire la page de tarifs","next":"Récupérer la copie actuelle",
  "children":[{"title":"Auditer la copie actuelle","eta":"10m"},
              {"title":"Esquisser 2 maquettes","eta":"30m"},
              {"title":"Publier la maquette choisie","eta":"20m"}]},
 {"title":"Répondre au fournisseur","area":"Admin","eta":"15m","status":"waiting_user","next":"L'utilisateur doit confirmer la quantité"}
]

bl batch --session <SID> <chemin-vers-fichier.json> (mettez le fichier dans votre espace de travail temporaire, pas dans le projet de l'utilisateur).

Rejouez la capture en une ligne compacte pour que l'utilisateur puisse la corriger :

Capturé : T-0042 Page de tarifs (1h) → T-0043 audit (10m), T-0044 maquettes (30m), T-0045 publication (20m) ; T-0046 Réponse fournisseur (en attente de vous).

Vérifiez bl list d'abord, et mettez à jour une tâche existante au lieu d'en créer une double. Ajoutez "parent":"T-0042" (ou --parent T-0042 sur bl add) pour placer une sous-tâche sous une tâche existante.

C. Revendiquer, puis travailler. Exécutez bl claim <ID> --session <SID> [--eta 20m] avant de commencer chaque tâche. Si la revendication est refusée parce qu'une autre session active la possède, laissez-la tranquille. Les revendications sont verrouillées, donc deux sessions ne peuvent jamais gagner la même. Travaillez en parallèle si possible. La session organisatrice met à jour le backlog pour ses sous-agents, en passant à chaque sous-agent son ID de tâche.

D. Mettre à jour au fur et à mesure. bl update <ID> --session <SID> --log "décision / constatation" [--next "…"] [--output <chemin ou lien>] [--status blocked|waiting_user|ready]

  • Enregistrez les décisions de l'utilisateur dans ses propres mots.
  • Chaque fichier ou lien que vous produisez va dans --output.
  • En attente de l'utilisateur signifie --status waiting_user --next "<exactement ce dont vous avez besoin>".

E. Clôturer honnêtement. Exécutez bl done <ID> --session <SID> --log "livré …" --output … seulement après avoir vérifié le résultat. Une tâche parente ne peut pas être fermée tant que ses sous-tâches sont ouvertes. Pour abandonner une tâche, exécutez bl drop <ID> --session <SID> --reason "…". Ne supprimez jamais rien.

F. Pied de page. Terminez chaque réponse qui a impliqué du travail par la sortie en une ligne de bl footer --session <SID> [--exclude <IDs que vous venez de rapporter>].

5. Domaines

Chaque tâche de premier niveau reçoit un domaine de config.json (bl areas les liste). Les sous-tâches héritent du domaine de leur parent. Choisissez la correspondance la plus proche. Ajoutez un nouveau domaine (bl areas --add "Nom") uniquement lorsqu'une nouvelle ligne de travail continue apparaît clairement, et mentionnez-le lorsque vous le faites. bl areas --rename ANCIEN NOUVEAU renomme un domaine dans la configuration et sur chaque tâche.

6. ETA (chaque tâche en a une)

  • L'ETA est le temps réel nécessaire à l'assistant pour terminer, en supposant un travail parallèle. C'est généralement 5 à 60 minutes, parfois des heures, rarement des jours. Format : 10m, 45m, 2h, 1h30m, 1d.
  • Incluez le temps de vérification du résultat.
  • Le décompte commence à la revendication ou à la création. Le tableau signale en rouge les tâches en retard.
  • Lorsque vous dépasserez, réestimez immédiatement : --eta 1h --eta-reason "…". Ne laissez jamais une tâche passer en retard en silence.
  • Pour une tâche waiting_user, l'ETA est le temps pour terminer après la réponse de l'utilisateur.

7. Règles inter-sessions

  • Une revendication reste active tant que sa session continue de mettre à jour la tâche. Après 24 heures sans modification, elle est périmée, et toute session peut la reprendre (la reprise est enregistrée).
  • N'utilisez jamais --force sur une revendication active sans l'accord de l'utilisateur.
  • Avant la fin d'une longue période de travail, laissez chaque tâche revendiquée avec un --next qu'une nouvelle session pourrait exécuter à froid. Libérez le travail non terminé avec --status ready --log "libéré : <état>".
  • Pour "qu'est-ce qui est ouvert", "où en sommes-nous" ou "qu'a fait l'autre session", répondez à partir de bl list (--all, --area X, --session Y), pas de la mémoire de la conversation.
  • Le backlog appartient à un seul appareil. Les sessions sur d'autres appareils, ou dans le cloud, l'utilisent uniquement via un lien vers cet appareil.
  • Si une commande indique qu'une tâche est occupée, une autre session l'écrit à cet instant. Réessayez une fois après un moment.

8. Quand ignorer la capture

Ignorez la capture uniquement pour une question ponctuelle répondue entièrement dans la même réponse. Capturez tout le reste : tout ce qui a un livrable, tout ce qui s'étend sur plus d'un tour, et tout ce qui est différé. En cas de doute, capturez-le.

9. Mode Hors ligne (aucun appareil utilisateur accessible)

  1. Miroir les tâches dans la propre liste de tâches de votre plateforme si elle en a une, ou une liste de vérification dans votre réponse sinon.
  2. Mettez en file chaque opération bl.py prévue, un objet JSON par ligne, dans backlog-pending.jsonl dans votre espace de travail temporaire (jamais dans le projet de l'utilisateur) : {"cmd":"add","args":{…},"at":"<iso>"}.
  3. Dites à l'utilisateur une fois : "Votre ordinateur n'est pas accessible, donc les mises à jour du backlog sont mises en file d'attente et seront synchronisées lorsqu'il sera de nouveau disponible."
  4. Réessayez l'appareil à chaque tour. Une fois qu'il est accessible, rejouez la file d'attente dans l'ordre et exécutez bl open.
  5. Si la session se termine avant la synchronisation, la dernière réponse doit lister les tâches non synchronisées en entier.

10. Le tableau

board.html se régénère à chaque écriture et se rafraîchit toutes les 30 secondes. Il montre :

  • des couloirs par domaine, avec les colonnes À faire / En cours / Bloqué / En attente de <propriétaire> / Terminé
  • l'ETA et le compte à rebours sur chaque carte, avec les tâches en retard en rouge
  • quelle session a créé, travaillé et terminé chaque tâche
  • un clic pour accéder au journal complet et aux sorties

BOARD.md est le même tableau en texte.

Quand l'utilisateur demande à le voir ("montre mon backlog", "ouvre le tableau", "qu'est-ce qui est ouvert ?") :

  • Sur l'ordinateur qui détient le backlog, exécutez bl board --open pour l'ouvrir dans le navigateur par défaut.
  • Lorsqu'aucun navigateur sur cet ordinateur n'est accessible (par exemple, un chat sur téléphone), collez un court résumé de bl list groupé par domaine, avec les tâches en retard et en attente de l'utilisateur en premier.
  • Le tableau est un fichier local. Il n'est jamais publié, téléchargé ou partagé.

11. Notes sur les plateformes

  • Clients MCP (tout assistant ou framework d'agent). scripts/backlog_mcp.py est un serveur MCP stdlib sur stdio exposant backlog_session, backlog_open, backlog_add, backlog_claim, backlog_update, backlog_done, backlog_drop, backlog_list, backlog_show, backlog_footer, backlog_board, backlog_init et backlog_where. Enregistrez-le avec la commande python3 (Windows py, args -3 <chemin>) et les arguments <chemin vers backlog_mcp.py>, éventuellement avec l'environnement BACKLOG_DIR. Il exécute le même bl.py, donc les routes shell et MCP partagent un seul backlog.
  • Agents pilotés par API. Un modèle appelé via une API n'a pas accès aux fichiers de l'utilisateur par lui-même. Le développeur exécute le serveur MCP (ou bl.py derrière son propre outil) sur la machine qui possède le backlog et donne ces outils au modèle. Les sandbox de code hébergé sont temporaires, donc un backlog là-bas est perdu lorsque le sandbox se termine ; ne le conservez pas là.
  • Sessions Claude desktop / cloud / téléphone liées à l'ordinateur de l'utilisateur (outils d'appareil tels que device_bash, device_request_folder_access, device_commit_files ; chargez-les via votre recherche d'outil s'ils sont différés). Le dossier de backlog ou son parent (par exemple ~/Documents) doit être un dossier connecté ; sinon, appelez device_request_folder_access une fois avec la raison "pour conserver votre backlog de tâches sur cet ordinateur". Ensuite, exécutez les commandes via device_bash en utilisant le chemin connecté (par exemple python3 $HOME/mnt/Documents/Aapastech-Backlog/bl.py …). Pour installer bl.py via le pont, préparez le fichier et envoyez-le à l'appareil (device_commit_files).
  • Claude Code / Codex / Cursor / autres agents de codage exécutent le moteur directement dans leur shell, selon le tableau de la section 1.

Référence des commandes

bl init    [--owner NOM] [--areas "A,B,C"] [--title T]        configuration initiale / changement de propriétaire, domaines ou titre du tableau
bl version                                                    version du moteur
bl where                                                      dossier du backlog, version du moteur, lien du tableau
bl areas   [--add NOM …] [--rename ANCIEN NOUVEAU]            lister / ajouter / renommer des domaines
bl session --id SID --label L --surface S [--url U]           enregistrer une session ; affiche les tâches ouvertes
bl open    --session SID                                      tâches ouvertes de cette session + non réclamées
bl batch   --session SID fichier.json|-                        ajouter plusieurs tâches ("children" imbriqués = sous-tâches)
bl add     --session SID --title T --area A --eta 20m [--parent ID] [--status S] [--next N] [--priority P1]
bl claim   ID --session SID [--eta 20m] [--force]
bl update  ID --session SID [--status S] [--eta E --eta-reason R] [--next N] [--log L] [--output O] [--area A] [--title T]
bl done    ID --session SID [--log L] [--output O] [--force]
bl drop    ID --session SID --reason R
bl list    [--all] [--area A] [--session SID] [--json]
bl show    ID
bl footer  --session SID [--exclude ID1,ID2]
bl board   [--open]
bl where

Référence rapide du tableau des commandes MCP

FonctionOutil MCPShell bl …
Démarrer une sessionbacklog_sessionsession
Voir les tâches ouvertesbacklog_openopen
Ajouter une tâchebacklog_addadd
Ajouter par lot qui hérite de la session, de l'ETA, de la priorité—batch
Revendiquer une tâchebacklog_claimclaim
Mettre à jour l'état / le journal / le résultatbacklog_updateupdate
Marquer comme terminébacklog_donedone
Abandonnerbacklog_dropdrop
Lister les tâchesbacklog_listlist
Afficher une tâchebacklog_showshow
Raccourci de pied de pagebacklog_footerfooter
Ouvrir le tableaubacklog_boardboard --open
Initialiser le backlogbacklog_initinit
Vérifier le dossier / la versionbacklog_wherewhere

Skills associés