| name | task-runner |
| description | Lit un backlog de tâches dans une note vault (frontmatter tasks[]), exécute séquentiellement, met à jour le statut in-place, déclenche checkpoint via delegate_task après chaque tâche. Rapport de progression dans 07_Hermes. |
| version | 1.0.0 |
| platforms | ["linux","macos"] |
| metadata | {"hermes":{"tags":["task-runner","todo","execution","backlog","progression"],"related_skills":["checkpoint","pipeline","orchestrator-router","vault-memory"],"model":"deepseek-v4-full","coding_delegate":"mistral-3.5","coding_runtime":"vibe-cli"}} |
task-runner
Adaptation de task-runner (04) — ULK → Hermes. Carte :
docs/backlog/2026-06-28-SPEC-HERMES-TASK-RUNNER/CARD.md (P0, GitHub #266). Gap historique #1.
Exécute les tâches d'un backlog vault une par une, marque l'avancement in-place, déclenche
un checkpoint après chaque tâche complétée. Sans lui, Hermes planifie mais n'exécute pas de
façon tracée. Critique pour l'utilisateur (projets photo, dev Swift, product dans le même vault).
Runtime & modèles
-
DeepSeek V4 full pilote : sélection de la prochaine tâche, marquage du statut,
rédaction du rapport, orchestration du checkpoint.
-
Coding délégué : quand une tâche consiste à écrire/éditer du code, task-runner
n'écrit pas le code lui-même — il délègue à Mistral 3.5 via vibe CLI :
delegate_task(coder, prompt="<tâche cadrée : fichier cible, contrat, tests>")
└─ (coder via vibe — invocation selon la config Hermes)
DeepSeek cadre la tâche (fichier explicite, entrée/sortie, tests à faire passer), Mistral
produit le diff, DeepSeek relit avant de marquer done. Éditer une note Markdown du
vault n'est pas du coding → reste sur DeepSeek.
Schéma de la note de tâches
01_PROJETS/<projet>/tasks.md, frontmatter :
tasks:
- id: t1
title: "…"
description: "…"
priority: high|normal|low
kind: code|note|ops
status: todo|done|blocked
completed_at: null
output: null
Procédure
- Sélectionne la prochaine tâche
status: todo par priorité.
- Exécute : si
kind: code → delegate_task(coder) (Mistral) ; sinon DeepSeek directement.
- Écrit le résultat in-place :
status: done, completed_at, output (tronqué).
delegate_task(checkpoint) après complétion (sauf mode --no-checkpoint).
- Génère/mets à jour
07_Hermes/task-runner-log.md (faites/total, durée, erreurs).
- Tâche
blocked → raison loguée, skip propre (pas de crash).
Critères d'acceptation
Pièges
- Tâches atomiques et idempotentes : la skill ne décompose pas des tâches vagues à la
volée (ça, c'est
pipeline).
- Séquentiel par défaut : la cohérence du vault entre tâches prime sur le parallélisme.
- Ne pas confondre avec
pipeline : task-runner exécute des tâches discrètes, pipeline
orchestre des phases.
- Prompt de délégation coding fermé : sans fichier cible + contrat, Mistral part en
vrille (pas de LSP côté vibe). Toujours cadrer par fichier.
delegate_task(checkpoint) alourdit chaque tâche → mode --no-checkpoint pour les tâches légères.