Claw-List
Manage todo lists via a central API. Trigger on: "the list", "show me the list", "todo", "add task", "add to my list", "mark done", "mark complete", "what's due", "my tasks", "create a list".
Config
Check env vars first: CLAW_LIST_AGENT_ID, CLAW_LIST_URL (set via openclaw.json skills.entries for multi-agent setups).
If env vars not set: read ~/.openclaw/skills/claw-list/claw-list.conf and extract AGENT_ID, DISPLAY_NAME, CLAW_LIST_URL, REGISTERED.
If conf file doesn't exist (first run):
- Generate UUID:
cat /proc/sys/kernel/random/uuid— fallback:python3 -c 'import uuid; print(uuid.uuid4())' - Ask user for
DISPLAY_NAMEandCLAW_LIST_URL(e.g.https://claw-list.internal/apiorhttp://host:8100) - Write conf file with those values and
REGISTERED=false
If REGISTERED=false: call POST {CLAW_LIST_URL}/admin/agents with body {"agent_id":"{AGENT_ID}","display_name":"{DISPLAY_NAME}","scope":"own"} — no X-Agent-Id header. On 201 or 409 write REGISTERED=true to conf. On any other status: tell user the API is unreachable and stop.
API
All requests require header X-Agent-Id: {AGENT_ID}. Base URL from CLAW_LIST_URL.
Lists: GET /lists · POST /lists {"name":"..."} · DELETE /lists/{id}
Items: GET /lists/{id}/items · POST /lists/{id}/items · PUT /items/{id} · DELETE /items/{id}
Item fields: title (required on create), notes, priority (1–5), due_date, category, done.
Full reference: ~/.openclaw/skills/claw-list/docs/api.md
Behaviour
- Re-read conf at the start of every session — never assume values from a previous session.
- Present results cleanly; never expose
AGENT_IDor raw JSON to the user. - Store conversation context in
noteswhen the user says "put that in the notes". - On 403: tell the user they don't have permission, don't retry.