name: tasks description: Browse and resume tasks, threads, and background jobs across sessions execution: direct
Interactive task browser. Shows active threads, pending inbox items, and running jobs across all sessions. Also supports registering new tasks.
Behavior
- Query the task ledger for active threads and pending inbox items for the current realm.
- Present them using AskUserQuestion so the user can select what to focus on.
- For the selected thread/task, load the resume capsule and surface the context.
- If "Add new task" is selected, collect title + description and create a new thread.
Implementation
Run this Python snippet to gather data:
import subprocess, json, os
mcp_dir = os.path.expanduser("~/.claude/plugins/cache/genomewalker-cc-soul/cc-soul/$(cat ~/.claude/plugins/cache/genomewalker-cc-soul/cc-soul/.version 2>/dev/null || echo 'latest')/chitta-mcp")
# Fallback: find it relative to the skills dir
import pathlib
skill_file = pathlib.Path(__file__) if '__file__' in dir() else pathlib.Path('.')
Actually, use the Bash tool to gather the data, then use AskUserQuestion.
Step 1 — gather data
_BASE="$HOME/.claude/plugins/cache/genomewalker-cc-soul/cc-soul"
_VER="$(cat $HOME/.claude/plugins/cache/genomewalker-cc-soul/.version 2>/dev/null || ls -v "$_BASE" | tail -1)"
_MCP_DIR="$_BASE/$_VER/chitta-mcp"
# Active threads
python3 "$_MCP_DIR/task_ledger.py" thread_list --status active --limit 10
# Pending inbox
python3 "$_MCP_DIR/task_ledger.py" inbox_list --state pending --limit 20
Step 2 — present with AskUserQuestion
Build options from threads + inbox items. Each option label should be:
- For threads:
[thread] <title> (last active: <relative time>) - For inbox completed:
✓ <digest[:80]> - For inbox failed:
✗ <digest[:80]>
Always include these fixed options at the bottom:
- "Add new task" — register a new persistent thread
- "Dismiss all inbox" — ack all pending inbox items
- "Nothing / close" — no action
Step 3 — act on selection
Thread selected: Run resume capsule and display it:
python3 "$_MCP_DIR/resume_capsule.py" build --thread-id <thread_id>
Parse the summary field and present it as context. Then ask the user if they want to continue that thread or just view it.
Inbox item selected: Acknowledge it:
python3 "$_MCP_DIR/task_ledger.py" inbox_ack --item-id <item_id> --state acked
Then summarize what happened.
"Dismiss all inbox": Ack all pending items for the realm.
"Add new task":
- Ask the user for a title (AskUserQuestion, free text via "Other").
- Ask for a short description of what needs to be done (AskUserQuestion, free text via "Other").
- Detect the current realm:
~/.claude/bin/chitta realm_detect 2>/dev/null || echo "global"
- Create the thread:
python3 "$_MCP_DIR/task_ledger.py" thread_create --title "<title>" --realm "<realm>"
- Store the description as the first inbox item so it survives across sessions:
python3 "$_MCP_DIR/task_ledger.py" inbox_push \
--thread-id <thread_id> \
--event-type note \
--digest "<description[:120]>" \
--target-realm "<realm>"
- Confirm: print the thread ID and title, tell the user it will appear in
/tasksnext session.
Notes
- The MCP dir can be found reliably as: the directory containing
task_ledger.pyunder$HOME/.claude/plugins/cache/genomewalker-cc-soul/. - If the task ledger DB doesn't exist yet (
~/.claude/task-ledger.db), the ledger will be empty — that's fine, just say "No tracked tasks yet." - Use
realm_detectvia chitta if REALM is not set:chitta realm_detect