Tâches mentat

VérifiéSûr

Gérez un stockage local de tâches en markdown avec revendications atomiques et rafraîchissement TTL. Prend en charge la séparation des flux HITL/AFK.

Spar Skills Guide Bot
ProductiviteIntermédiaire
27/07/2026
Claude Code
#task-management#markdown#file-based#atomic-locking#multi-agent

Recommandé pour

Synthèse automatique

Gère un magasin de tâches local en markdown (un fichier par tâche) avec revendication atomique par sentinelle O_EXCL, rafraîchissement TTL et classification HITL/AFK.

Points forts

  • Protocole de verrouillage POSIX concret (O_EXCL pour le test-and-set, rename(2) pour les mutations) évitant les revendications concurrentes entre agents
  • Séparation nette des responsabilités : le skill ne possède que le schéma et le protocole fichiers, l'intake et le triage sont délégués
  • Contrat d'interface explicite via une CLI unique avec sous-commandes documentées et événements émis
  • Porte de sélection (pick gate) claire qui interdit toute prise de tâche non triée ou verrouillée

Limites

  • Fortement lié à l'écosystème : suppose des conventions de branches (holding branch, worktrees) et un dossier partagé via lien symbolique
  • Pas de graphe de dépendances typé, de bail d'écriture ni de priorité/échéance — ajoutés seulement sur besoin démontré
  • Nécessite Python3 et le chemin fixe ~/.agents/skills/mentat-tasks/scripts/tasks.py, donc peu portable en l'état
Quand l'utiliser

À utiliser quand plusieurs agents ou sessions parallèles doivent se coordonner sur une file de tâches locale sans serveur ni base de données.

Quand l'éviter

À éviter si vous cherchez un gestionnaire de tâches riche (dépendances, priorités, estimations) ou une intégration avec un outil externe comme GitHub Issues ou Jira.

Analyse de sécurité

Sûr
Score qualité82/100

The allowed-tools declaration is tightly scoped to a single python3 script under the skill's own directory, and the documented operations are all local filesystem mutations (create/claim/refresh/done) using standard POSIX primitives. There are no destructive commands, no network calls, no secret/token exfiltration, no obfuscated payloads, and instructions are transparent. The only residual concern is that the actual script contents are not shown and the cross-repo symlink is a deliberate but broad filesystem action; neither rises to a destructive or exfiltrating capability.

Points d'attention
  • •The referenced implementation (scripts/tasks.py, lib.support.frontmatter.mutate) is not included in the SKILL.md, so its actual behavior cannot be fully audited from the listing alone.
  • •Uses one-time symlink of ~/.mentat/tasks into each repo's .mentat/tasks, which shares task data across repositories (intentional, but broadens data visibility).
Comment cette analyse est faite

Exemples

Créer une tâche
Crée une nouvelle tâche pour ajouter la validation d'email au formulaire d'inscription, liée au plan PRD-004, avec des critères d'acceptation en checklist.
Revendiquer et démarrer
Liste les tâches en statut todo, choisis une tâche AFK non verrouillée et revendique-la avec un TTL de 600 secondes pour l'agent claude-session-2.
Libérer une revendication expirée
La tâche T007 a un claim_expires_at dépassé ; libère-la puis revendique-la à nouveau pour l'agent claude-session-5 avec un TTL de 900 secondes.

name: mentat-tasks description: Local md task store. Atomic claim, TTL refresh, vertical-slice + HITL/AFK doctrine. allowed-tools: Bash(python3 ~/.agents/skills/mentat-tasks/scripts/tasks.py *)

mentat-tasks

Manage a local markdown task store backed by POSIX atomics. No server, no database, no binary. Each task is a file; each claim is a lock sentinel.

Layout

Tasks live at <repo>/.mentat/tasks/<ID>-{plan-ref}.md. Cross-repo unified view: ln -s ~/.mentat/tasks .mentat/tasks (user runs once).

Board-home vs worktree separation (ADR-0002): task files live on the holding branch. Chunks operating in worktrees write status back via the atomic protocol below.

Task file schema

---
id: T001
status: todo            # todo | in-progress | review | done | wontfix
kind: HITL              # HITL | AFK — vertical-slice classification (required before pick)
claimed_by: ""          # agent id or empty
claim_expires_at: ""    # RFC3339; empty if unclaimed
created_at: 2026-06-06T00:00:00Z
---

Body sections:

  • Parent — plan or PRD link.
  • What to build — one paragraph.
  • Acceptance criteria — bulleted checklist.
  • Blocked by — prose, free-form.

Invocation

All operations route through scripts/tasks.py. Set MENTAT_TASKS_DIR to override the default .mentat/tasks/ dir.

| Subcommand | Args | Description | |---|---|---| | next-id | — | Print next T### | | create | {plan-ref} | reads stdin | Create task file from stdin body | | claim <file> <agent> <ttl_s> | — | Atomic claim via O_EXCL lock sentinel | | release <file> | — | Release claim, restore todo | | refresh <file> <ttl_s> | — | Bump claim_expires_at | | done <file> | — | Terminal state: done | | wontfix <file> | — | Terminal state: wontfix | | list [--status <s>] | — | Enumerate tasks as TSV (id, status, kind, claimed_by) |

Atomic-write invariant

All frontmatter mutations use lib.support.frontmatter.mutate — tmp+os.replace same-fs rename (POSIX rename(2)). Claims use os.open(O_CREAT|O_EXCL) for exclusive create — correct POSIX primitive for test-and-set. The lock sentinel (.lock) is separate from the content file so rename never rebinds the guard inode.

Pick gate

Pick only if:

  1. status is todo, or in-progress with claim_expires_at < now (stale — release then re-claim).
  2. kind is set (HITL or AFK). Never pick untriaged.
  3. No .lock sentinel exists for a non-expired claim.

Events emitted

| Event | Payload | |---|---| | task_created | {id, slug} | | task_claimed | {id, agent, expires_at} | | task_released | {id} | | task_resolved | {id} | | task_canceled | {id} |

Boundary with other skills

Intake skill → writes task via mentat-tasks create. triage → mutates kind + status. mentat-prd → references task ids as T### in prose. mentat-tasks owns schema + filesystem protocol only.

Deferred

Typed dep graph, touches: write-set lease, priority/tags/due/estimate. Add only on demonstrated need.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/mentat-tasks-ms2s7bye/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/mentat-tasks-ms2s7bye' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/mentat-tasks-ms2s7bye/download' --output '.skill-downloads/mentat-tasks-ms2s7bye/SKILL.md.part' && mv '.skill-downloads/mentat-tasks-ms2s7bye/SKILL.md.part' '.skill-downloads/mentat-tasks-ms2s7bye/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Outils déclarés par l’auteur (à vérifier dans votre agent) : Bash(python3 ~/.agents/skills/mentat-tasks/scripts/tasks.py *)

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/mentat-tasks-ms2s7bye/SKILL.md' && test -s '.skill-downloads/mentat-tasks-ms2s7bye/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/mentat-tasks' && cp -R '.skill-downloads/mentat-tasks-ms2s7bye' '.claude/skills/mentat-tasks'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/mentat-tasks-ms2s7bye'

openskills read 'mentat-tasks-ms2s7bye'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/mentat-tasks-ms2s7bye/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires