Files
Lesstime/.claude/commands/push-tickets-lesstime.md
Matthieu e3149f8a27
All checks were successful
Auto Tag Develop / tag (push) Successful in 5s
Build Release Artefact / build (push) Successful in 1m41s
chore : bump version to v0.3.10 and add push-tickets-lesstime skill
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:36:54 +01:00

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-review qui a genere un TICKETS.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.md doit exister dans le repertoire courant (genere par full-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 :

  1. Initialise la session via curl subprocess
  2. Extrait le SID
  3. Boucle sur les tickets et appelle create-task pour chacun
  4. 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, ## P3 delimitent les groupes de priorite
  • Chaque ### T-XXX -- {Titre} est un ticket
  • Tout le contenu entre deux ### T-XXX constitue la description du ticket

Phase 2 -- Discovery MCP (appels paralleles)

Appeler ces outils MCP en parallele pour recuperer les metadonnees :

  1. list-projects -- pour afficher les projets disponibles
  2. list-statuses -- pour mapper le statut initial des taches
  3. list-priorities -- pour mapper P0/P1/P2/P3 aux priorites Lesstime
  4. list-efforts -- pour estimer l'effort
  5. list-tags -- pour les tags disponibles

Phase 3 -- Demander le projet cible

Presenter a l'utilisateur la liste des projets Lesstime et lui demander :

  1. Quel projet ? -- dans quel projet creer les taches
  2. Quel statut initial ? -- ex: "To Do", "Backlog"
  3. Creer des groupes par priorite ? -- ex: "P0 - Urgents", "P1 - Importants"
  4. Assigner a quelqu'un ? -- optionnel
  5. 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 :

  1. Creer le groupe "P0 - Urgents (securite)" via create-group
  2. Creer le groupe "P1 - Importants" via create-group
  3. Creer le groupe "P2 - Documentation" via create-group
  4. Creer le groupe "P3 - Nice to have" via create-group

Phase 6 -- Creer les taches

Pour chaque ticket dans TICKETS.md :

  1. Construire le titre : "T-XXX -- {titre}"
  2. Construire la description : le corps complet du ticket (Pourquoi + A faire + Fichiers)
  3. Appeler create-task avec 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