Release a taskwarrior task without closing it — stops +ACTIVE clock and annotates state for handoff. Use when pausing mid-task, handing off to another agent, or aborting cleanly.
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Release a taskwarrior task without closing it — stops +ACTIVE clock and annotates state for handoff. Use when pausing mid-task, handing off to another agent, or aborting cleanly.
Git probes (git rev-parse --show-toplevel, git branch --show-current)
write to stderr in a no-git cwd, and stderr from a Context backtick
aborts the skill before its body runs. Git toplevel and current-branch
resolution are done in the body via the Bash tool (where 2>/dev/null
and exit-code handling are tolerated).
Parameters
Parse $ARGUMENTS:
$0 — task ID (required).
Remaining positional words — concatenate as the freeform state message for the handoff annotation. If empty, prompt for one before annotating (an empty handoff annotation defeats the purpose).
--clear-identity — clear agent / host / branch / worktree UDAs in addition to pid. Use when the next agent should not inherit any context (e.g. cross-host handoff). Default behaviour preserves these so the queue still shows who last touched the task.
--no-coworker-marker — skip the /git:coworker-check --release step. By default, releasing the task also drops the git-side session marker so destructive ops in this clone are no longer guarded.
Use export | jq — never info / list. Capture the uuid field as
$TASK_UUID — every mutating call from Step 3 onward addresses the task by
$TASK_UUID, never $TASKID. Step 2's AskUserQuestion pause is a real gap
during which another agent's concurrent task done can renumber $TASKID
(see .claude/rules/task-id-stability.md). Decide:
Condition
Action
status is not pending
Abort. Released tasks must be pending; if it is already closed, the release is a no-op.
start is unset (not +ACTIVE)
Warn but proceed — annotation + UDA drain still useful as a "I looked at this" signal.
start is set
Standard path. Continue.
Step 2: Resolve state message
If the user did not pass a message, ask them for one with a single AskUserQuestion. The annotation is the handoff payload — without it the next agent has only timestamps. Keep the prompt focused: "Where did you stop? (one sentence)".
Step 3: Annotate the handoff
Annotate before stopping — if the stop fails (e.g. concurrent modify), the annotation is still captured:
task "$TASK_UUID" annotate "released by $AGENT — state: $MESSAGE"
$AGENT is read from the task's existing agent UDA (the claim stamped it); fall back to claude-${CLAUDE_SESSION_ID:0:8} if unset.
Step 4: Stop the active state
task "$TASK_UUID" stop
This clears the built-in start attribute and removes the +ACTIVE virtual tag. The task is back in the dispatch pool for /taskwarrior:task-coordinate.
Step 5: Drain identity UDAs
Always clear pid (the process is going away):
task "$TASK_UUID" modify pid:
When --clear-identity is passed, also clear the rest:
The empty-value field: syntax removes a UDA in taskwarrior. Default behaviour keeps agent / host / branch / worktree so task-status "Recently touched" can attribute the work.
Step 6: Drop the coworker-check marker
Unless --no-coworker-marker was passed:
Use SlashCommand to invoke `/git:coworker-check --release`.