From claude-tasks
Use when the user wants to STOP a Claude Code session and hand its still-open work to the task queue — "handoff", "I'm done with this session", "stop and queue what's left", "offload this session", "park this and pick it up later", "hand off everything to parked". Captures the session's open work items into the queue (inbox/ by default, or a directed target like parked/ or ready/) AND adds a judgement layer of things discussed-but-never-tracked, so nothing is stranded when the session ends.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-tasks:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Turn this session's still-open work into queue briefs so nothing is lost when the user
Turn this session's still-open work into queue briefs so nothing is lost when the user
stops. Over-capture into inbox/; the enrich skill filters and structures later. Do
not make the user approve each item — capture quietly, then let enrichment shrink it.
All add_task.py calls below resolve the queue via $CLAUDE_TASKS_DIR → nearest
.tasks/ → ~/tasks (or pass --root <path>).
List everything still open in this session's task state — your current TodoWrite /
Task list items whose status is pending or in_progress (skip anything completed
or cancelled). For each, file an inbox brief:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/add_task.py" \
--title "<lead with the noun>" \
--context "<what + why + where; note it came from this session's open work>" \
--source claude --commit
Now re-read the conversation and capture the follow-ups that never made it into a todo
— the things the user would wish had been captured: a fix flagged in passing, a "we
should also…", a decision deferred, a bug noticed out of scope. File each the same way.
Be generous (over-capture); leave them all in inbox/ (no --ready) for enrich to weigh.
Before each capture, check for an existing brief and sharpen it instead of duplicating:
grep -rl "<keyword>" "$CLAUDE_TASKS_DIR"/{inbox,ready,in-progress,done} 2>/dev/null
By default everything lands in inbox/. When the user gives a direction, interpret it
and route accordingly — pass --status <state> to add_task.py and/or a shared directive
note via --context. The target state is one of inbox (default), ready, or parked.
--status parked. Parked =
consciously suspended; add a one-line directive note so future-you knows why and when to
resume, e.g. --context "Parked from session <date>: paused until <trigger>."--status ready (they're actionable as-is).--status parked, the others
default. Use your judgement on which item is which.python3 "${CLAUDE_PLUGIN_ROOT}/scripts/add_task.py" \
--title "<lead with the noun>" \
--context "<what + why + the handoff direction>" \
--status parked --source claude --commit
If no direction is given, behave as the default sections above (everything to inbox/).
One short line, never the whole pile. Name the direction if one was given. e.g.
"Parked 6 open items + 2 follow-ups under ''; resume with /tasks-next when ready."
or "Filed 6 open items to the inbox; run /enrich to turn them into briefs."
This is the model-driven handoff. A deterministic SessionEnd auto-capture hook (parsing the session transcript for open Task-API/TodoWrite items, idempotent via a marker) is a planned add-on — see the project roadmap. Until then, invoke this skill when you stop.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub kmmwren/claude-tasks --plugin claude-tasks