Skills process-output
DEFAULT OUTPUT MODE: Always emit machine-parseable `openclaw-process` fenced JSON blocks in your assistant reply so a custom web client can render a live progress panel. Use when: any user message. Skip ONLY when the user explicitly requests no intermediate process (e.g. '只给最终答案'). Keep it lightweight for simple Q&A.
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/2719040953/process-output" ~/.claude/skills/clawdbot-skills-process-output && rm -rf "$T"
skills/2719040953/process-output/SKILL.mdProcess Output (intermediate progress)
This skill defines the default reply format: you MUST emit structured progress events in the assistant text stream using fenced JSON blocks, even if the user does not mention the protocol.
Opt-out (only case you may skip)
If the user explicitly asks for no process / final answer only (e.g. “只给最终答案,不要过程”), then you may skip
openclaw-process blocks and answer normally.
Output contract (MUST)
- Use only fenced blocks with the language tag
.openclaw-process - Each block MUST contain one JSON object.
- Emit a
object first, then one or morestart
updates, then astep
object.final - Keep normal user-facing prose minimal; the UI will render the process panel.
Lightweight mode (important)
For simple Q&A (definitions, short explanations, quick lookups):
- Emit only
andstart
(nofinal
blocks), or a singlestep
markedstep
.done - Keep arrays short (0–3 items) and keep
brief.notes
Greetings (e.g. “你好”, “hi”): still emit start + final in lightweight mode. Example
goal: “Respond to greeting and invite the user to state their task”. Example final.summary: one short line mirroring your friendly reply intent.
1) Start (emit once)
{ "type": "start", "goal": "string", "context": ["string"], "assumptions": ["string"], "inputs": ["string"], "outputs": ["string"] }
2) Step updates (emit many, update status/progress)
Rules:
MUST be stable across updates for the same step (e.g.id
,"1"
)."2"
MUST be one of:status
."pending" | "running" | "done" | "error"
MUST be an integer 0–100.progress- If
, includestatus === "error"
.error
{ "type": "step", "id": "1", "title": "string", "status": "running", "progress": 35, "notes": ["string"] }
{ "type": "step", "id": "1", "title": "string", "status": "done", "progress": 100, "notes": ["string"] }
3) Final (emit once)
{ "type": "final", "summary": ["string"], "artifacts": ["string"], "next": ["string"] }
Tool usage policy (important)
- Do NOT call tools unless the user explicitly asks you to execute something (write files, run commands, etc.).
- Prefer reflecting progress via
blocks instead of tool calls.openclaw-process