- global CLAUDE.md (time tracking via MCP lesstime) - workspace CLAUDE.md (dev_malio inventory) - commands : ticket-writer, push-tickets-lesstime, full-project-review, bump-version - MCP install guide (Code + Desktop) + .mcp.json.example - scripts/install.sh + sync.sh
7.4 KiB
name, description
| name | description |
|---|---|
| push-tickets-lesstime | Use after full-project-review to push TICKETS.md tickets into Lesstime project management via MCP. Triggers on "push tickets", "envoyer tickets", "creer les tickets dans lesstime", "sync tickets lesstime", "pousser les tickets". |
Push Tickets to Lesstime
Overview
Prend le fichier TICKETS.md genere par le skill full-project-review et cree les taches correspondantes dans Lesstime via le MCP lesstime (mcp__lesstime__*). Chaque ticket devient une tache avec la bonne priorite, le bon groupe et la description complete.
When to Use
- Apres un
full-project-reviewqui a genere unTICKETS.md - L'utilisateur demande de "pousser", "sync", "envoyer" les tickets dans Lesstime
- L'utilisateur veut creer les taches dans son gestionnaire de projet
Prerequis
- Un fichier
TICKETS.mddoit exister dans le repertoire courant (genere parfull-project-review) - Le MCP
lesstimedoit etre disponible (verifiermcp__lesstime__list-projectsretourne du contenu). Si non, signaler le probleme a l'utilisateur — ne pas fallback sur curl.
Outils MCP utilises
| Operation | Tool MCP |
|---|---|
| Lister projets | mcp__lesstime__list-projects |
| Lister users | mcp__lesstime__list-users |
| Lister statuts (globaux) | mcp__lesstime__list-statuses |
| Lister priorites (globales) | mcp__lesstime__list-priorities |
| Lister tags (globaux) | mcp__lesstime__list-tags |
| Lister groupes d'un projet | mcp__lesstime__list-groups (projectId optionnel) |
| Creer un groupe | mcp__lesstime__create-group |
| Creer une tache | mcp__lesstime__create-task |
Champs create-task
| Champ | Type | Description |
|---|---|---|
projectId |
int (required) | Cible du ticket |
title |
string (required) | Titre du ticket |
description |
string | Markdown complet |
statusId |
int | Defaut "A faire" = 1 |
priorityId |
int | Voir list-priorities |
effortId |
int | S/M/L — voir list-efforts |
assigneeId |
int | User assignee |
collaboratorIds |
int[] | Collaborateurs |
groupId |
int | Groupe (per-project) |
tagIds |
int[] | Tags globaux |
deadline |
string (ISO date) | Optionnel |
Tous les IDs sont des entiers — pas d'IRI a construire, le MCP s'occupe de la conversion.
IDs verifies (cache — toujours reconfirmer via les outils list-*)
| Type | Label | ID |
|---|---|---|
| Statut | A faire | 1 |
| Statut | En cours | 2 |
| Statut | Bloque | 3 |
| Statut | En attente de validation | 4 |
| Statut | Termine | 5 |
| User | admin | 2 |
| User | Tristan | 3 |
| User | Lucile | 4 |
| User | Matthieu | 5 |
| User | matteo | 6 |
| User | kevin | 7 |
| User | geoffrey | 8 |
| User | Julie | 10 |
| Projet | Lesstime | 5 |
| Projet | Coltura | 6 |
| Projet | Inventory | 7 |
| Projet | Ferme | 8 |
| Projet | Malio UI | 11 |
| Projet | SIRH | 12 |
| Projet | Infrastructure | 13 |
| Projet | Qualiopi | 14 |
| Projet | ADMIN | 16 |
| Projet | Maintenance-LIOT | 17 |
| Projet | Vaultwarden | 18 |
| Projet | ednotif-bundle | 19 |
| Projet | Formation | 20 |
Process
digraph push_flow {
rankdir=TB;
"1. Lire TICKETS.md" -> "2. Discovery MCP (parallele)";
"2. Discovery MCP (parallele)" -> "3. Demander projet cible + config";
"3. Demander projet cible + config" -> "4. Mapper priorites P0/P1/P2/P3";
"4. Mapper priorites P0/P1/P2/P3" -> "5. create-group si besoin";
"5. create-group si besoin" -> "6. create-task pour chaque ticket";
"6. create-task pour chaque ticket" -> "7. Resume au user";
}
Phase 1 — Lire et parser TICKETS.md
Lire le fichier TICKETS.md du repertoire courant. Extraire :
- La liste des tickets avec leur ID (T-001, T-002, ...)
- Le titre de chaque ticket
- La priorite (P0, P1, P2, P3) — derivee de la section dans laquelle se trouve le ticket
- Le corps complet (Pourquoi + A faire + Fichiers) — sera la description de la tache
Parsing :
- Les sections
## P0,## P1,## P2,## P3delimitent les groupes de priorite - Chaque
### T-XXX -- {Titre}est un ticket - Tout le contenu entre deux
### T-XXXconstitue la description du ticket
Phase 2 — Discovery MCP (appels paralleles)
Appeler en parallele :
mcp__lesstime__list-projectsmcp__lesstime__list-usersmcp__lesstime__list-statusesmcp__lesstime__list-prioritiesmcp__lesstime__list-tags
Apres le choix du projet : mcp__lesstime__list-groups avec projectId.
Phase 3 — Demander le projet cible
Presenter a l'utilisateur la liste des projets Lesstime et lui demander :
- Quel projet ? (
projectId) - Quel statut initial ? (
statusId, defaut "A faire" = 1) - Creer des groupes par priorite ? (ex: "P0 - Urgents", "P1 - Importants")
- Assigner a quelqu'un ? (
assigneeId, optionnel) - Tags a ajouter ? (
tagIds, optionnel)
Phase 4 — Mapper les priorites
Mapper les priorites du TICKETS.md aux priorites Lesstime via list-priorities :
- P0 → priorite la plus haute disponible (ex: "Urgent", "Critical")
- P1 → priorite haute
- P2 → priorite moyenne
- P3 → priorite basse
Si le mapping n'est pas evident, demander confirmation a l'utilisateur.
Phase 5 — Creer les groupes (si demande)
Si l'utilisateur veut des groupes par priorite et qu'ils n'existent pas, appeler mcp__lesstime__create-group pour chacun :
create-group({ projectId: <id>, title: "P0 - Urgents (securite)", color: "#D32F2F" })
create-group({ projectId: <id>, title: "P1 - Importants", color: "#F57C00" })
create-group({ projectId: <id>, title: "P2 - Documentation", color: "#FBC02D" })
create-group({ projectId: <id>, title: "P3 - Nice to have", color: "#388E3C" })
Stocker les id retournes pour les reutiliser dans la phase suivante.
Phase 6 — Creer les taches
Pour chaque ticket dans TICKETS.md :
- Construire le titre :
"T-XXX -- {titre}" - Construire la description : corps complet du ticket (Pourquoi + A faire + Fichiers)
- Appeler
mcp__lesstime__create-taskavecprojectId,statusId,priorityId,assigneeId,groupId,tagIds
Gestion d'erreurs : si un create-task echoue, logguer l'erreur et continuer avec le suivant. Reporter toutes les erreurs en fin de batch.
Phase 7 — Resume
Afficher au user :
- Nombre de taches creees
- Repartition par groupe / priorite
- Lien
http://project.malio-dev.fr/my-taskssi assignees au user login - Taches echouees avec raison
Mapping par defaut (groupes)
| TICKETS.md | Lesstime Group | Couleur |
|---|---|---|
| P0 | "P0 - Urgents (securite)" | #D32F2F |
| P1 | "P1 - Importants" | #F57C00 |
| P2 | "P2 - Documentation" | #FBC02D |
| P3 | "P3 - Nice to have" | #388E3C |
Common Mistakes
- Bypasser le MCP : ne jamais retomber sur curl + JWT REST. Si le MCP est down, signaler a l'utilisateur.
- Oublier la phase Discovery : les IDs (statuts, priorites, groupes) peuvent varier — toujours
list-*avant de creer. - Ne pas demander confirmation : toujours valider le projet cible et le mapping avec l'utilisateur avant de creer.
- Creer sans groupes : les groupes rendent la vue Lesstime beaucoup plus lisible.
- Description trop courte : inclure le corps complet du ticket, pas juste le titre.
- Oublier les groupes existants : toujours
list-groupsavantcreate-grouppour eviter les doublons. - Ne pas gerer les erreurs : si une tache echoue, continuer avec les suivantes et reporter a la fin.