8.8 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 son MCP server. 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) - L'API Lesstime doit etre accessible via HTTP
Connexion a Lesstime
Lesstime est accessible via un serveur MCP HTTP (JSON-RPC 2.0). Il n'y a PAS de MCP natif configure dans Claude Code — il faut appeler l'API directement via curl dans le Bash tool.
Parametres de connexion
URL: http://project.malio-dev.fr/_mcp
TOKEN: 7e8b410a5b79b5c0432951dcee3a3a81e0731e86d9f70d8784ec079a2b759c64
Procedure de connexion (3 etapes)
Etape 1 — Initialiser la session (SANS header Mcp-Session-Id) :
curl -s -D /tmp/mcp_headers -X POST http://project.malio-dev.fr/_mcp \
-H "Authorization: Bearer 7e8b410a5b79b5c0432951dcee3a3a81e0731e86d9f70d8784ec079a2b759c64" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"claude","version":"1.0"}}}' > /dev/null
Etape 2 — Extraire le Session ID depuis les headers de reponse :
SID=$(grep -i "mcp-session-id" /tmp/mcp_headers | awk '{print $2}' | tr -d '\r\n')
Etape 3 — Appeler les outils avec le Session ID :
curl -s -X POST http://project.malio-dev.fr/_mcp \
-H "Authorization: Bearer 7e8b410a5b79b5c0432951dcee3a3a81e0731e86d9f70d8784ec079a2b759c64" \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SID" \
-d '{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"list-projects","arguments":{}}}'
Les reponses sont au format {"jsonrpc":"2.0","id":X,"result":{"content":[{"type":"text","text":"[JSON_DATA]"}]}}.
Extraire les donnees avec : python3 -c "import sys,json; d=json.loads(sys.stdin.read()); print(json.loads(d['result']['content'][0]['text']))"
Approche recommandee : script Python
Pour pousser plusieurs tickets, generer un script Python temporaire qui :
- Initialise la session via curl subprocess
- Extrait le SID
- Boucle sur les tickets et appelle create-task pour chacun
- Affiche le resultat
Voir la memoire reference_lesstime.md pour les IDs connus (projets, users, statuts, priorites).
IDs frequemment utilises
| Type | Label | ID |
|---|---|---|
| Statut | A faire | 1 |
| Statut | En cours | 2 |
| Statut | Termine | 5 |
| Priorite | Basse | 1 |
| Priorite | Moyen | 2 |
| Priorite | Haute | 3 |
| User | matteo | 6 |
| User | Matthieu | 5 |
| Projet | Infrastructure | 13 |
| Projet | Lesstime | 5 |
| Projet | Inventory | 7 |
| Projet | Ferme | 8 |
| Projet | SIRH | 12 |
IMPORTANT : Toujours faire un appel list-projects / list-users / list-priorities en phase Discovery pour verifier que les IDs sont toujours valides. Les IDs ci-dessus sont un cache pour aller plus vite, pas une source de verite.
Outils MCP Lesstime disponibles
Le MCP Lesstime expose 22 outils. Voici ceux utilises par ce skill :
Discovery (appeler en premier pour mapper les IDs)
| Outil | Usage |
|---|---|
list-projects |
Trouver le projectId cible |
list-statuses |
Recuperer les statuts disponibles (label, id, color) |
list-priorities |
Recuperer les priorites disponibles (label, id, color) |
list-efforts |
Recuperer les niveaux d'effort (label, id) |
list-groups |
Lister les groupes d'un projet (par projectId) |
list-tags |
Lister les tags disponibles (label, id, color) |
list-users |
Lister les utilisateurs pour l'assignation |
Creation
| Outil | Usage |
|---|---|
create-task |
Creer une tache (projectId, title, description, statusId, priorityId, effortId, assigneeId, groupId, tagIds) |
create-group |
Creer un groupe dans un projet (projectId, title) |
Parametres de create-task
projectId: int (required) -- ID du projet cible
title: string (required) -- Titre du ticket (ex: "T-001 -- Supprimer le webhook hardcode")
description: string (optional) -- Corps complet du ticket (Pourquoi + A faire + Fichiers)
statusId: int (optional) -- ID du statut initial
priorityId: int (optional) -- ID de la priorite
effortId: int (optional) -- ID de l'effort estime
assigneeId: int (optional) -- ID de l'utilisateur assigne
groupId: int (optional) -- ID du groupe (utilise pour regrouper par priorite)
tagIds: int[] (optional) -- IDs des tags
Process
digraph push_flow {
rankdir=TB;
"1. Lire TICKETS.md" -> "2. Discovery MCP (parallele)";
"2. Discovery MCP (parallele)" -> "3. Demander projet cible";
"3. Demander projet cible" -> "4. Mapper priorites";
"4. Mapper priorites" -> "5. Creer groupes si besoin";
"5. Creer groupes si besoin" -> "6. Creer les taches";
"6. Creer les taches" -> "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 ces outils MCP en parallele pour recuperer les metadonnees :
list-projects-- pour afficher les projets disponibleslist-statuses-- pour mapper le statut initial des tacheslist-priorities-- pour mapper P0/P1/P2/P3 aux priorites Lesstimelist-efforts-- pour estimer l'effortlist-tags-- pour les tags disponibles
Phase 3 -- Demander le projet cible
Presenter a l'utilisateur la liste des projets Lesstime et lui demander :
- Quel projet ? -- dans quel projet creer les taches
- Quel statut initial ? -- ex: "To Do", "Backlog"
- Creer des groupes par priorite ? -- ex: "P0 - Urgents", "P1 - Importants"
- Assigner a quelqu'un ? -- optionnel
- Tags a ajouter ? -- ex: "review", "tech-debt"
Phase 4 -- Mapper les priorites
Mapper les priorites du TICKETS.md aux priorites Lesstime :
- P0 -> priorite la plus haute disponible (ex: "Urgent", "Critical")
- P1 -> priorite haute (ex: "High")
- P2 -> priorite moyenne (ex: "Medium")
- P3 -> priorite basse (ex: "Low")
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 :
- Creer le groupe "P0 - Urgents (securite)" via
create-group - Creer le groupe "P1 - Importants" via
create-group - Creer le groupe "P2 - Documentation" via
create-group - Creer le groupe "P3 - Nice to have" via
create-group
Phase 6 -- Creer les taches
Pour chaque ticket dans TICKETS.md :
- Construire le titre :
"T-XXX -- {titre}" - Construire la description : le corps complet du ticket (Pourquoi + A faire + Fichiers)
- Appeler
create-taskavec tous les parametres mappes
Optimisation : Creer les taches en parallele par batch de 5 pour eviter de surcharger l'API.
Phase 7 -- Resume
Afficher un resume au user :
- Nombre de taches creees
- Repartition par priorite
- Lien vers le projet Lesstime (si disponible)
- Taches echouees (si applicable) avec raison
Mapping par defaut
| TICKETS.md | Lesstime Priority | Lesstime Group |
|---|---|---|
| P0 | Urgent/Critical | "P0 - Urgents (securite)" |
| P1 | High | "P1 - Importants" |
| P2 | Medium | "P2 - Documentation" |
| P3 | Low | "P3 - Nice to have" |
Common Mistakes
- Oublier la phase Discovery -- les IDs de priorites/statuts varient par workspace Lesstime
- Ne pas demander confirmation -- toujours valider le projet cible et le mapping 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
- Ne pas gerer les erreurs -- si une tache echoue, continuer avec les suivantes et reporter a la fin