Subtask
Dispatches parallel AI workers into isolated git worktrees via the subtask CLI
Fungerar med konfiguration
Vad den gör
Teaches Claude Code to orchestrate parallel work through the `subtask` Go CLI: each task gets its own git worktree and branch, plus a task record with title, base branch and an event history. Covers the full loop of draft, send to a worker, review the diff, advance stages (doing to review to ready), and squash-merge back into the base branch. Triggers when the user asks to delegate work to workers or subagents, run several tasks in parallel, or mentions Subtask by name.
Testrapport
Built the Go CLI from source (go1.26.5) and ran everything under an mktemp HOME; the real ~/.claude/skills and ~/.subtask were verified untouched. All 13 commands the SKILL.md table lists (ask, draft, send, stage, list, show, diff, merge, close, workspace, interrupt, log, trace) exist in the binary, and `subtask install --no-prompt --scope user --harness claude` wrote SKILL.md to ~/.claude/skills/subtask/SKILL.md. Baseline artifact (/tmp/st-baseline): fixing two independent Python bugs my own way gave 2 sequential branches and `git worktree list` showing 1 entry, with no task metadata. Skill artifact (/tmp/st-skill2): following the body verbatim gave `git worktree list` with 3 entries (main + fix/duration-hours + feat/retry-validation live simultaneously at distinct paths), a .subtask/tasks/<task>/ folder per task holding TASK.md (title/base-branch frontmatter), WORKFLOW.yaml and history.jsonl, a `subtask list` status table showing both in flight with +1 -1 and +7 -3, and `subtask merge` squashing each onto main ("Merged ... Workspace freed") for a clean 2-commit main. The one step I could not execute is the actual AI worker: `subtask send` provisioned the worktree and dispatched, but the harness died in 3.6s and `subtask trace` showed the worker prompt answered with "Invalid API key - Please run /login" because the temp HOME has no credentials, so I hand-committed the worker output to test review/merge. Also hit an undocumented blocker: in a repo where /.subtask/ was not gitignored before drafting, `subtask merge` refused with "has uncommitted changes" (ensureGitignore is only called from `subtask config`, not `draft`). Security scan clean: SKILL.md has no URLs, scripts, base64 or injection text, and the optional plugin hooks only echo "consider loading the subtask skill" reminders.
Testad: 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 Kommandon och exempelprompter
/subtaskDispatches parallel AI workers into isolated git worktrees via the subtask CLI
Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):
Delegate this task to a subtask workerRun these three tasks in parallel workspacesCreate a new subtask for this feature