Loading...
Loading...
Persistent cross-session task queue for AI agents using Claude Code Tasks schema. Add, claim, complete, and reassign tasks with move-based locking, dependency tracking (blocks/blockedBy), conversation transcript linking, and staleness detection. Use for: (1) saving tasks for future agent sessions, (2) cross-session task persistence, (3) multi-agent task coordination, (4) linking conversation transcripts to tasks. Triggers: task queue, save task, agent task, queue task, persistent task, cross-session task, task for agent.
npx skill4agent add molechowski/claude-skills dev-task-queuegit clone git@github.com:OlechowskiMichal/agent-task-queue.git ~/.agent-task-queue~/.agent-task-queue| Operation | Command | Description |
|---|---|---|
| Add | | Create a new task |
| List | | List/filter tasks |
| Claim | | Claim a pending task |
| Complete | | Mark task done |
| Release | | Unclaim a task |
| Reassign | | Reassign to different agent |
| Index | | Regenerate root index |
| Prune | | Archive old tasks |
python3 ~/.agent-task-queue/scripts/add_task.py \
--assignee go-expert \
--subject "Fix error handling in API middleware" \
--description "The error handler swallows context. Wrap errors with fmt.Errorf." \
--priority high \
--project my-api \
--tags "error-handling,api" \
--active-form "Fixing error handling" \
--ttl-hours 48 \
--blocked-by "3,7" \
--context-repo "git@github.com:OlechowskiMichal/my-api.git" \
--context-files "pkg/middleware/error.go,pkg/middleware/error_test.go" \
--context-notes "See issue #42 for the original bug report".highwatermarkpending/{id}.json# All pending tasks for an agent
python3 ~/.agent-task-queue/scripts/list_tasks.py --agent go-expert --status pending
# Stale tasks (claimed but exceeded TTL)
python3 ~/.agent-task-queue/scripts/list_tasks.py --stale
# Blocked tasks (unmet dependencies)
python3 ~/.agent-task-queue/scripts/list_tasks.py --blocked
# Tasks for a specific project
python3 ~/.agent-task-queue/scripts/list_tasks.py --project my-api
# Tasks created after a date
python3 ~/.agent-task-queue/scripts/list_tasks.py --since 2026-03-01python3 ~/.agent-task-queue/scripts/claim_task.py 1 --session-id $(uuidgen)blockedBypending/active/ownermetadata.claimed_atstatusin_progresspython3 ~/.agent-task-queue/scripts/complete_task.py 1 \
--session-id "$SESSION_ID" \
--jsonl-path "~/.claude/projects/.../conversation.jsonl" \
--notes "Fixed by wrapping errors with context in middleware chain"completed/YYYY-MM/{id}.jsonpython3 ~/.agent-task-queue/scripts/release_task.py 1pending/metadata.previously_claimed=truestatuspendingpython3 ~/.agent-task-queue/scripts/reassign_task.py 1 --to re-expertmetadata.assigneepending/active/blocksblockedByclaim_task.pyblockedByblocks# Add a task that depends on tasks 3 and 7
python3 ~/.agent-task-queue/scripts/add_task.py \
--subject "Deploy after migrations" \
--blocked-by "3,7"
# List all currently blocked tasks
python3 ~/.agent-task-queue/scripts/list_tasks.py --blocked--jsonl-path.jsonlmetadata.conversationsmetadata.ttl_hoursmetadata.claimed_at + ttl_hours < now--stalerelease_task.py# Dry run — show what would be deleted
python3 ~/.agent-task-queue/scripts/prune_completed.py --older-than 90d
# Actually delete
python3 ~/.agent-task-queue/scripts/prune_completed.py --older-than 90d --executeagent-task-queue/
├── .highwatermark # Monotonic ID counter (single integer)
├── pending/ # Flat — no agent subdirs
│ └── {id}.json
├── active/
│ └── {id}.json
├── completed/
│ └── YYYY-MM/
│ └── {id}.json
├── index.md # Single root index
├── scripts/
│ ├── _lib.py
│ ├── add_task.py
│ ├── claim_task.py
│ ├── complete_task.py
│ ├── list_tasks.py
│ ├── release_task.py
│ ├── reassign_task.py
│ ├── render_index.py
│ └── prune_completed.py
├── AGENTS.md
├── CLAUDE.md
├── TODO.md
└── README.md