Threads
Un thread est un nœud dans l'arborescence représentant un sujet de discussion spécifique. Chaque thread stocke un résumé concis en Markdown.
Arborescence de threads
Les threads forment un arbre enraciné au thread main :
main
├── auth
│ ├── auth-ui
│ └── auth-api
├── database
│ └── migrations
└── deploiementChaque thread a exactement un parent (sauf main qui n'en a pas) et peut avoir plusieurs enfants.
Créer des threads
thread_create(title: "Système Auth", parentId: "main")Ou avec le raccourci : tm:create Système Auth
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
title | string | requis | Titre du thread |
parentId | string | thread actif | Parent à partir duquel brancher |
Si parentId est omis, le nouveau thread branche depuis le thread actif.
Le nouveau thread devient automatiquement le thread actif.
Avertissement résumé parent
Lors de la création d'un thread enfant, ThreadMind vérifie si le thread parent possède déjà un résumé. Si ce n'est pas le cas, un avertissement est affiché :
Thread "auth-system" created under "main".
main
└── auth-system ← active
⚠️ Parent thread "main" has no summary yet.
Run `tm:summary` on "main" before continuing — this ensures the context
chain is complete when you call `context_get` from child threads.C'est non-bloquant — le thread enfant est toujours créé. L'avertissement rappelle de documenter le parent avant de brancher, afin que context_get puisse assembler une chaîne de contexte complète lors des prochaines sessions.
Génération d'ID
Les IDs suivent les mêmes règles de slugification que les projets :
| Titre | ID |
|---|---|
"Système Auth" | systeme-auth |
"Routes API v2" | routes-api-v2 |
Les doublons reçoivent des suffixes numériques : systeme-auth-2.
Changer de thread
thread_switch(threadId: "auth-ui")Ou avec le raccourci : tm:switch auth-ui
Bascule sur le thread indiqué. L'outil retourne un aperçu du contexte assemblé pour confirmation.
Visualiser l'arborescence
thread_listOu avec le raccourci : tm:tree
Retourne un arbre ASCII avec le thread actif marqué :
main
├── auth
│ ├── auth-ui ← actif
│ └── auth-api
├── database
│ └── migrations
└── deploiementMettre à jour les résumés
summary_update(content: "Implémenté l'auth JWT avec...", threadId: "auth")Ou avec le raccourci : tm:summary (auto-génère) ou tm:summary <contenu>
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
content | string | requis | Nouveau résumé (markdown) |
threadId | string | thread actif | Thread à mettre à jour |
Rédiger de bons résumés
Les résumés sont au cœur de la valeur de ThreadMind. Ils doivent être :
- Concis — 5-15 lignes, capturant l'essentiel
- Orientés décisions — ce qui a été décidé et pourquoi
- Actionnables — ce qui a été implémenté, où en est-on
Bon résumé :
Implémentation de l'authentification JWT :
- Access tokens (15min) + refresh tokens (7j)
- bcrypt pour le hachage, salt rounds : 12
- Stratégie locale Passport.js pour le login
- Tokens stockés en cookies httpOnly (pas localStorage)
- Décision : pas d'OAuth pour v1, ajout prévu en v2Mauvais résumé :
On a parlé d'auth et on a décidé d'utiliser JWT.
L'IA a suggéré plusieurs options et on en a choisi une.Supprimer des threads
thread_delete(threadId: "auth-api")Ou avec le raccourci : tm:delete auth-api
Supprime le thread et tous ses descendants. Le thread main ne peut pas être supprimé.
Si le thread actif est supprimé, le thread actif revient à main.
En mode équipe, vous ne pouvez supprimer que les threads dont vous êtes l'auteur.
Rebaser des threads
Le rebase déplace un thread (et tous ses descendants) vers un autre parent — similaire à git rebase.
thread_rebase(threadId: "auth-ui", newParentId: "dashboard")Ou avec le raccourci : tm:rebase auth-ui dashboard
Avant :
main
├── auth
│ └── auth-ui
└── dashboardAprès tm:rebase auth-ui dashboard :
main
├── auth
└── dashboard
└── auth-ui| Paramètre | Type | Requis | Description |
|---|---|---|---|
threadId | string | Oui | Thread à déplacer |
newParentId | string | Oui | Nouveau thread parent |
Contraintes :
- Impossible de rebaser le thread
main - Impossible de créer des références circulaires (ne peut pas rebaser sur un descendant)
- Impossible de rebaser un thread sur lui-même ou son parent actuel
- En mode équipe, seul l'auteur du thread peut le rebaser
Effets secondaires :
- Met à jour l'arborescence (l'ancien parent perd l'enfant, le nouveau parent l'acquiert)
- Met à jour le frontmatter du thread (
parentId,updatedAt) - Tous les descendants se déplacent automatiquement avec le thread
Format des fichiers thread
Chaque thread est stocké comme un fichier Markdown avec frontmatter YAML :
---
id: systeme-auth
title: Système d'authentification
parentId: main
author: mahmoud-a3f9
createdAt: 2026-04-15T10:00:00Z
updatedAt: 2026-04-15T12:30:00Z
---
Implémentation de l'authentification JWT avec refresh tokens.
bcrypt pour le hachage. Stratégie locale Passport.js.
Décision : pas d'OAuth pour v1.Le frontmatter contient les métadonnées ; le corps est le contenu du résumé.