From task-workflow
Captures conversation context as structured, dependency-ordered tasks via TaskCreate. Decomposes work items, analyzes dependencies. Use /task-save [--cwd <path>] [query] for handoff.
npx claudepluginhub jongwony/claudepanel.spoon --plugin task-workflowThis skill uses the workspace's default tool permissions.
Capture current work state as structured task entries with dependency ordering using TaskCreate.
Manages tasks for session continuity, coordinating multi-step work, subagent assignments, and dependencies that survive compaction.
Breaks down implementation plans into detailed task lists with agent contexts, acceptance criteria, dependencies, priorities, complexity levels, and status tracking.
Guides task management for complex multi-step projects: create fine-grained work items with dependencies, track progress using claude-reliability CLI commands like 'work next' and 'work create'.
Share bugs, ideas, or general feedback.
Capture current work state as structured task entries with dependency ordering using TaskCreate.
Transform conversation context into actionable task entries by:
$ARGUMENTS: Optional flags and topic filter.
--cwd <path>: Cross-project handoff. The path is the target project directory (absolute or relative).Parse $ARGUMENTS for --cwd:
--cwd <path> is present, extract the path and resolve to absolute path using Bash realpath.--cwd <path> become the topic filter.--cwd is absent, behave as normal task-save.Analyze the conversation context to identify discrete work items:
Single-task signals: The conversation focuses on one specific change, one file, one bug, or one feature.
Multi-task signals: The conversation covers multiple distinct actions, a checklist, a plan with phases, or work spanning different files/components for different purposes.
When 2+ work items are identified:
Analyze semantic relationships between work items to determine execution order. Use your understanding of the work — not keyword matching — to judge dependencies:
B.blockedBy = [A.id]B.blockedBy = [A.id]B.blockedBy = [A.id]TaskUpdate(taskId=<dependent>, addBlockedBy=[<dependency1>, <dependency2>])
Create a single TaskCreate with:
| Field | Format |
|---|---|
| subject | Imperative verb phrase (task goal) |
| description | **Current Status**: ...**Next Steps**: ...(handoff: append source session endnote) |
| activeForm | Present continuous form (spinner display) |
| metadata | Context fields (see below) |
Create N TaskCreate entries, then set dependencies:
| Step | Action |
|---|---|
| 1 | TaskCreate for each work item (same format as single-task) |
| 2 | TaskUpdate for each task with dependencies to set blockedBy |
Each task follows the same field format as single-task mode. The description for each task should be self-contained — a reader should understand the task without needing to read other tasks in the group.
After creation, display a summary:
## Task Save Summary
Created N tasks with dependency graph:
- [ID1] subject (root)
- [ID2] subject (blocked by: ID1)
- [ID3] subject (blocked by: ID1, ID2)
Standard (no --cwd):
{"source": "task-save", "topic": "..."}
Handoff (with --cwd):
{
"source": "task-save",
"handoff": true,
"target_cwd": "/absolute/path/to/target",
"source_cwd": "/absolute/path/to/current",
"source_session_id": "uuid-of-current-session"
}
target_cwd: resolved absolute path from --cwd argumentsource_cwd: current working directory ($PWD) at handoff timesource_session_id: current session UUID (stored for future UI integration; currently consumed via the description endnote below)Obtaining source_session_id: Run ls -t ~/.claude/projects/*/*.jsonl | head -1 and extract the UUID filename (without .jsonl extension). This returns the most recently modified session file. Note: In multi-session environments, this may return a different session's ID. Run the command immediately before TaskCreate to minimize the window for ambiguity.
When handoff: true, ClaudePanel.spoon renders the task with a distinct handoff launcher that opens a new Claude session in target_cwd with a fresh CLAUDE_CODE_TASK_LIST_ID.
When --cwd is present, append the following endnote to the description after **Next Steps**:
---
**Source Session**: `<source_session_id>`
To retrieve context from the originating session: `find ~/.claude/projects/ -name "<source_session_id>.jsonl"`
Replace <source_session_id> with the actual UUID obtained above.
This endnote is necessary because TaskGet API output does not include metadata fields. The description endnote ensures the handoff target session can discover and read the source conversation regardless of API limitations.
--cwd: validate the path exists before creating the task