Task Planning
Use this skill when bundled tool calls require a plan. The gateway stores a lightweight in-memory plan state per client/session and per content-derived planningId. It does not persist plans across gateway restarts and it does not render UI.
Workflow
- First read this complete SKILL.md and use the returned
skillToken. - Before a real bundled tool call, call
task-planningwithaction: "update"and the current todo list. - Use the returned
planningIdon the next real bundled tool call. - Reuse the same
planningIdacross multiple tool calls while working through the plan. It does not expire after successful tool calls. - Do not update the plan after every tool call just because a tool ran. A single plan step may require many tool calls.
- The gateway may include a single
planningReminderfield on successful bundled tool results. It only refers to the currentin_progressitem and may include a conciseset_statuscall to mark that item completed. - If the same
planningIdusesshell_commandthree or more times in a row without a plan update or another successful bundled tool, the gateway may includeshellCommandReminder. Use it as a nudge to combine related shell commands, read multiple files in one pass when useful, or prefer efficient search commands such asrgandrg --files. A shell command that starts withrgresets this counter. - If
multi_edit_filefails three or more times in a row for the sameplanningId, the gateway may includeeditFailureReminder. Use it as a nudge to inspect exact file content, simplify the operation, split unrelated changes, or fall back to a focused shell script when structured edits keep failing. - If the approach or step list changes, call
action: "update"with the new plan and use the returned newplanningId. Stop using the oldplanningId; clear it if needed. - Use
action: "set_status"for simple state changes. Ifitemis omitted, it updates the currentin_progressitem. When that item is set tocompletedand pending items remain, the gateway automatically starts the next pending item asin_progressand returns it asnextItem. - When every plan item is updated to
completed, the gateway closes thatplanningIdand it can no longer be used for real bundled tool calls. Then omit the temporary todo list from the final response unless the user asks for it.
Status Values
Use these status labels when showing a checklist:
pending- not started yetin_progress- currently being worked oncompleted- finished and no longer active
Suggested Format
{
"action": "update",
"explanation": "Starting the implementation",
"plan": [
{ "step": "Inspect existing skill registration", "status": "completed" },
{ "step": "Add the planning gate", "status": "in_progress" },
{ "step": "Run focused tests", "status": "pending" }
],
"skillToken": "<token from this SKILL.md>"
}
The response includes:
{
"planning": {
"planningId": "plan-..."
}
}
Pass those fields to the next real bundled tool call:
{
"planningId": "plan-..."
}
For concise status updates, prefer set_status instead of sending the full plan again:
{
"action": "set_status",
"planningId": "plan-...",
"status": "completed",
"skillToken": "<token from this SKILL.md>"
}
That marks the current in_progress item as completed. If more work remains, the response includes nextItem; continue with that item using the same planningId. To update a specific array item, use a 1-based item number:
{
"action": "set_status",
"planningId": "plan-...",
"item": 2,
"status": "in_progress",
"skillToken": "<token from this SKILL.md>"
}
For final responses, summarize what changed and any verification performed. Do not keep the planning checklist in the final answer unless the user explicitly asks for it.