Subtask

Délègue des travailleurs IA parallèles dans des worktrees git isolés via l'interface CLI subtask

par zippoxer · zippoxer/subtask

Fonctionne avec configuration ★ 7.6/10

Subtask — Délègue des travailleurs IA parallèles dans des worktrees git isolés via l'interface CLI subtask

Ce que fait

Apprend à Claude Code à orchestrer le travail parallèle via l'interface CLI Go `subtask` : chaque tâche obtient son propre git worktree et sa branche, plus un enregistrement de tâche avec titre, branche de base et historique des événements. Couvre le cycle complet de brouillon, envoi à un travailleur, révision du diff, avancement des étapes (en cours, à réviser, prêt) et fusion par squash dans la branche de base. Se déclenche lorsque l'utilisateur demande de déléguer du travail à des travailleurs ou des sous-agents, d'exécuter plusieurs tâches en parallèle ou mentionne Subtask par son nom.

Rapport de test

Construit l'interface CLI Go à partir des sources (go1.26.5) et exécuté tout sous un HOME temporaire ; les vrais ~/.claude/skills et ~/.subtask ont été vérifiés intacts. Toutes les 13 commandes listées dans le tableau SKILL.md (ask, draft, send, stage, list, show, diff, merge, close, workspace, interrupt, log, trace) existent dans le binaire, et `subtask install --no-prompt --scope user --harness claude` a écrit SKILL.md dans ~/.claude/skills/subtask/SKILL.md. Artefact de référence (/tmp/st-baseline) : la correction de deux bugs Python indépendants à ma manière a donné 2 branches séquentielles et `git worktree list` affichant 1 entrée, sans métadonnées de tâche. Artefact de compétence (/tmp/st-skill2) : en suivant le corps textuellement, `git worktree list` a donné 3 entrées (main + fix/duration-hours + feat/retry-validation vivant simultanément à des chemins distincts), un dossier .subtask/tasks/<task>/ par tâche contenant TASK.md (frontmatter titre/branche de base), WORKFLOW.yaml et history.jsonl, un tableau de statut `subtask list` montrant les deux en cours avec +1 -1 et +7 -3, et `subtask merge` squashing chacun sur main (« Merged ... Workspace freed ») pour un main propre à 2 commits. La seule étape que je n'ai pas pu exécuter est le travailleur IA réel : `subtask send` a provisionné le worktree et a expédié, mais le harnais est mort en 3,6s et `subtask trace` a montré que l'invite du travailleur a répondu par « Invalid API key - Please run /login » car le HOME temporaire n'a pas d'identifiants, j'ai donc commis manuellement la sortie du travailleur pour tester la révision/fusion. J'ai également rencontré un bloqueur non documenté : dans un dépôt où /.subtask/ n'était pas ignoré par git avant le brouillon, `subtask merge` a refusé avec « has uncommitted changes » (ensureGitignore n'est appelé que depuis `subtask config`, pas `draft`). Scan de sécurité propre : SKILL.md n'a pas d'URL, de scripts, de base64 ou de texte d'injection, et les hooks de plugin optionnels ne font qu'afficher des rappels « consider loading the subtask skill ».

Testé le: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

git clone --depth 1 https://github.com/zippoxer/subtask.git /tmp/subtask-src
mkdir -p ~/.claude/skills/subtask
cp /tmp/subtask-src/pkg/install/SKILL.md ~/.claude/skills/subtask/SKILL.md
# REQUIRED: the skill is a thin wrapper and does nothing without the `subtask` Go binary.
#   brew install zippoxer/tap/subtask
#   # or: go install github.com/zippoxer/subtask/cmd/subtask@latest
#   # or: curl -fsSL https://subtask.dev/install.sh | bash   (upstream install script; audit before running)
# Then configure the worker harness (writes the same SKILL.md itself, so the copy above is optional):
#   subtask install --no-prompt --scope user --harness claude   # or --harness codex / opencode
#   # plain `subtask install` is interactive and fails without a TTY ("could not open a new TTY")
# REQUIRED: the chosen harness CLI (claude / codex / opencode) must be installed and authenticated,
#   otherwise `subtask send` fails with "claude failed: exit status 1".
# Recommended: commit `/.subtask/` to .gitignore BEFORE drafting tasks, or `subtask merge` aborts
#   with "has uncommitted changes" because .subtask/ is untracked inside each worktree.
# Optional plugin (adds hooks that remind Claude to load the skill):
#   /plugin marketplace add zippoxer/subtask  &&  /plugin install subtask@subtask

Commandes et exemples de prompts

  • /subtaskDélègue des travailleurs IA parallèles dans des worktrees git isolés via l'interface CLI subtask

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Delegate this task to a subtask worker
  • Run these three tasks in parallel workspaces
  • Create a new subtask for this feature