Install
openclaw skills install task-ledgerDurable workflow layer for OpenClaw long-running work. Use when tasks are multi-stage, recoverable, parallelized across sub-agents/ACP, use background exec o...
openclaw skills install task-ledgerUse Task Ledger to turn long-running agent work into durable task objects instead of relying on fragile chat context.
Task Ledger is a workflow layer on top of OpenClaw execution primitives. It does not replace ACP, sub-agents, exec, cron, or skills. It gives them a durable task structure:
tasks/logs/outputs/Use this skill when any of these are true:
execsessions_spawncronDo not use this skill for every tiny action. It is meant for work where losing state or execution structure would be costly.
This package includes:
tasks/logs/outputs/Bundled files live next to this skill under toolkit/.
If the current workspace does not already contain the toolkit, copy these bundled assets into the workspace root:
toolkit/scripts/* → <workspace>/scripts/toolkit/task-templates/* → <workspace>/task-templates/toolkit/tasks/README.md → <workspace>/tasks/README.mdAlways create the runtime directories if missing:
tasks/logs/outputs/Do not overwrite user-modified files silently unless explicitly asked. Prefer copying only missing files and then report what was installed.
process.sessionId, subtask.sessionKey, cron.jobId) when they exist.For multi-agent or multi-sub-agent work:
Avoid treating one task JSON file as a shared concurrent write target. Task trees are safer than shared state.
Create a task skeleton:
./scripts/new-task.sh <slug> <title> [goal] [executionMode] [stagesCsv] [priority] [owner]
Useful helpers:
./scripts/list-open-tasks.py
python3 ./scripts/task-ls-tree.py
python3 ./scripts/task-ready.py <taskId> [--json]
python3 ./scripts/task-start-if-ready.py <taskId> [nextAction]
python3 ./scripts/task-graph-export.py [--format markdown|dot|json] [--open-only]
./scripts/show-task.py <taskId>
./scripts/task-events.py <taskId> [limit] [--type <eventType>] [--json]
./scripts/update-task.py <taskId> ...
./scripts/task-advance.py <taskId> [nextAction]
./scripts/task-bind-process.py <taskId> <processSessionId> [pid] [--state <state>]
./scripts/task-bind-subtask.py <taskId> <sessionKey> [--agent-id <agentId>]
./scripts/task-bind-cron.py <taskId> <jobId> [--schedule <expr>] [--next-run-at <iso>]
./scripts/task-verify.py <taskId> <summary> ...
./scripts/task-resume-summary.py <taskId> [--json|--markdown]
./scripts/task-export.py <taskId> [--format markdown|json|short] [--write-report]
./scripts/close-task.py <taskId> <final-status> [summary]
./scripts/task-doctor.py [taskId] [--strict] [--json]
Use bundled examples for common risky workflows:
restart-openclaw-gateway.example.jsondeploy-service.example.jsonsync-feishu-doc.example.jsonTask files are not truth. They are cached descriptions of truth. Reality wins.