Install
openclaw skills install todokan-review-loopProcess Todokan task and thought boards with a review-loop workflow. Use when a task enters doing and the agent should pick it up, read latest comments, respond to the newest comment with a high-quality context-aware reply, add an execution update comment, and move the task back to done (Review). Use for recurring polling/cron automation with Todokan MCP.
openclaw skills install todokan-review-loopUse this workflow for autonomous handling of doing items.
Note: The MCP server only returns tasks where aiEnabled: true by default. Users send tasks to AI via a "Send to AI" button, which sets aiEnabled: true, assignee: 'ai', and status: 'doing'. This skill will only see tasks that users have explicitly sent to AI.
doing for each target board, and request description explicitly in fields.createdAt (oldest -> newest); if timestamps are equal, tie-break deterministically by comment id.createdAt.done (Review) only when objective is addressed or a concrete blocker/question is posted.Before drafting a comment, run this selection logic over the thread:
user_questions[] in chronological order (all user comments that contain a question/request).mcp_answers[] in chronological order (all MCP comments with substantive answers).resolved only if a later MCP comment explicitly addresses that specific question content.active_question as the newest unresolved user question.active_question exists, answer it directly first line.Hard guard:
Immediately before writing the MCP comment, compute and lock:
latest_user_comment_idactive_question_id (if any)planned_reply_scope (active_question or latest_user_intent)Then enforce:
active_question_id (or directly address latest user intent when no unresolved question exists).active_question_id points to a newer follow-up, abort and rewrite.This turn-lock check is a hard preflight gate; do not post until it passes.
Use timestamps as first-class context, not optional metadata:
T0 = task created time,U[n] = each user comment time,A[n] = each MCP answer time.active_question only if it is after the last answer that resolved earlier questions.Mandatory preflight output (internal):
last_answer_atlatest_user_comment_atnewer_user_input_exists (true/false)active_question_idIf newer_user_input_exists=true, the outgoing comment must address that newer input directly.
Before posting, verify all three are present:
Objective: one sentence stating what the task asks for (from title/description).Action: what was done this cycle toward that objective.Outcome: result, blocker, or next step.Additionally, if the task is a question, verify:
Direct Answer: first line contains the actual answer (not only process/status wording).Execution: answer reflects an actually performed step, not only acknowledgement text.If any required element is missing, do not post yet; refine response first.
Use this decision rule per task update:
Comment only (default)
Attach document + comment
add_document_to_task).Attach a document when at least one is true:
Comment template:
Quick update: <1-2 line summary>. I've attached a document with the full details.protectionLevel is read_only or protected.closed is human approval).Use one subagent role initially:
KAM responsibilities:
If the latest user message explicitly requests research/deep-dive/analysis (e.g., "research this", "please investigate", "do deep research", "compare sources"), this overrides direct-answer-first:
Hard guard:
todo -> only claim if explicitly configured.doing -> primary working state for this skill.done -> target after KAM update when work package is ready for review.closed -> human-only transition.Move doing -> done only if one of these is true:
Additionally:
doing <-> done) without new substantive progress.Critical completion guard:
done unless the thread already contains at least one substantive MCP answer.done.Otherwise keep doing and post a short progress comment.
done writes if task is already done.Example A (follow-up question):
What is the best CRM strategy for KAM?Thanks. And how do I concretely start tomorrow?Example B (ack only):
Perfect, thanks!Example C (correction):
No, I meant B2B SaaS, not E-Commerce.sessions_spawn for internal research runs.<title> (<id>)<user|mcp|system><n>commented / skipped / error<from> -> <to> or none