ClawMobile Trace Induction
Use this skill when the user wants to record, demonstrate, summarize, induce,
draft, or convert a ClawMobile mobile task into a reusable skill candidate.
This skill is not a skill executor. It records or reads a demonstration,
then creates human-readable and machine-readable draft artifacts for later
implementation. Do not replay the task or claim the candidate is production
ready.
Choose The Entry Point
- If the user provides a recording directory or
trace.json, use Existing
Trace Flow.
- If the user provides an existing generated skill directory and a new
recording/candidate for the same task, use Update Existing Skill Flow.
- If the user wants to create a candidate from a new human demonstration and no
recording path is provided, use Record Then Induce Flow.
- If a recording is already active and the user says they are finished, continue
from Stop Recording And Induce.
Do not ask the user to read coordinates, label every step, or explain raw touch
events. The user should operate the phone naturally.
Record Then Induce Flow
Use this flow when the user asks to record or create a new candidate skill from
a demonstration.
- Pick a concise
task_hint from the user's request, such as
wechat.send_message. If the user intentionally asks to record the next
demonstration without naming the task, use a generic hint such as
recorded_mobile_task and infer the task later from trace evidence. Ask
only when you cannot tell whether the user wants to record a new
demonstration, update an existing skill, or process an existing trace.
- Call
clawmobile_record_start with task_hint.
- Tell the user to perform the demonstration naturally on the phone and reply
when finished.
- Stop here and wait for the user. Do not call
clawmobile_record_stop until
the user indicates the demonstration is complete.
Stop Recording And Induce
Use this flow after the user says the demonstration is done.
- Call
clawmobile_record_stop.
- Use the returned
recording_dir or trace_path.
- Continue immediately with Existing Trace Flow. Do not ask for another
confirmation before generating the candidate.
Existing Trace Flow
Use this flow when a recording directory or trace.json is already available.
- Call
clawmobile_trace_prepare_summary.
- Use
recording_dir_or_trace_path, recording_dir, or trace_path.
- If the user did not provide a path and no just-finished recording is
available, ask for the recording directory or
trace.json path.
- Read the returned:
trace_digest
trace_digest.derived_semantics
grounding_rules
candidate_schema
allowed_anchors
- screenshot paths and state snippets
- Think through the demonstrated task using only the returned trace evidence.
- Produce a JSON candidate that matches
candidate_schema.
- Call
clawmobile_trace_save_skill_candidate with the candidate JSON.
- If validation reports rejected anchors or missing anchor references, revise
the candidate once using the same
trace_digest, then call
clawmobile_trace_save_skill_candidate again.
- If validation then passes with no rejected anchors, call
clawmobile_skill_candidate_promote with the saved skill_candidate_path
and install: true.
- Report the saved
skill_candidate_path, skill_summary_path, promoted
primary SKILL.md path, fixed_SKILL.md path, generated skill name,
generalized_skill.json, generalized_SKILL.md, and any remaining
warnings.
- Also give the user a short skill review:
- what the skill does
- required parameters
- plain-language execution steps
- whether fast path is available
- important uncertainties or anchors that may need regrounding
- how to improve it by recording another demonstration of the same task
Update Existing Skill Flow
Use this flow when a generated skill already exists and the user records or
provides another demonstration for the same task.
- First produce a validated
skill_candidate.json for the new trace by using
Record Then Induce Flow or Existing Trace Flow.
- Call
clawmobile_skill_update_from_trace with:
existing_skill_dir: the existing generated skill directory
new_recording_dir_or_candidate_path: the new recording directory or
skill_candidate.json
- Read the returned validation and
anchor_updates.
- If validation fails because the intent, app, or required parameters do not
match, stop and report that the new trace should create a separate skill.
- If validation succeeds, report the updated primary
SKILL.md,
generalized_skill.json, source traces, evidence directory, anchor
stability changes, and warnings.
- Explain what changed in the skill and whether the new trace strengthened
anchors, added a new entry state, or recorded a failure/correction pattern.
Do not merge unrelated traces just because the app is the same. Evolution is
for the same task intent. Stable UI anchors such as composer or send buttons may
become stronger replay-first anchors when multiple traces agree. Context or
parameter anchors such as chats, contacts, files, and search results should stay
reground-friendly.
Candidate Rules
- Use schema version
clawmobile.skill_candidate.v1.
- Set
source_trace_id to the trace id returned by prepare.
- Summarize the user's demonstrated intent in
task_summary.
- Fill
app.package and app.activity from trace state when available.
- Add an
intent object with:
name: stable snake_case task name
description: concise human-readable task description
parameters: variable user inputs, such as message_text
- Add preconditions, verification rules, and fallback guidance that a future
executor could use.
- Keep uncertain claims in
warnings instead of pretending they are known.
Generalization Rules
Promotion generates a merged skill directory. The primary SKILL.md is the
generalized skill. The fixed coordinate-heavy version is retained as
fixed_SKILL.md for evidence and rollback.
- Treat the fixed candidate as concrete evidence, not as a universal rule.
- Separate task/procedure applicability from anchor applicability.
- If the user intent matches but a coordinate or UI location changed, the
generalized skill should remain
applicable_with_regrounding when a
plausible grounding path exists.
- Do not add arbitrary contact, account, file, or object parameters unless the
trace evidence or candidate parameters already support them.
- Keep uncovered parameters under
intent.not_covered_parameters.
- Preserve uncertainty under
evolution.open_uncertainties so future traces or
failures can improve the skill.
- When multiple traces support the same skill, keep
source_traces,
per-anchor observations, and evolution.anchor_updates as evidence. Do not
delete older trace evidence.
- Generated skills should record execution feedback with
clawmobile_skill_record_feedback when it is low-friction and does not
disrupt the user-facing task. Success feedback can stay compact with outcome,
parameters, anchors, and verification summary. Failure or partial feedback is
especially useful when it includes the failed step/anchor and concise
observations so later trace updates or repairs have evidence. The feedback
tool automatically extracts compact verified contexts and failure patterns
into the generated skill's evolution block.
- Generated skills carry frontmatter/manifest metadata:
clawmobile_generated=true, feedback_tool=clawmobile_skill_record_feedback,
and status_tool=clawmobile_skill_status.
- Use
clawmobile_skill_status when a generated skill's prior execution
experience is needed in structured form.
- Generated
SKILL.md files render a Prior Execution Experience section
from feedback-derived guidance. Use it as evidence for grounding/fallback
choices, not as a replacement for normal verification.
- Generated
SKILL.md files may also render an eligible fast path. When it is
eligible and required parameters are clear, prefer
clawmobile_skill_run_fast_path before manually expanding every step. The
tool returns structured failure artifacts so normal stepwise recovery remains
available. Pass required skill variables under the top-level parameters
object. If the exact required names are unclear, call
clawmobile_skill_status; do not assume the runner lacks parameter support.
- If
clawmobile_skill_run_fast_path fails, do not immediately abandon the
fast path. First inspect the structured failure, current UI evidence, and
prior execution status. If the failure looks like a repairable entry-state,
text-query, or verifier mismatch, call
clawmobile_skill_reflect_fast_path_failure with a concise diagnosis and one
safe repair, then retry clawmobile_skill_run_fast_path once. Only after that
retry fails should you switch to normal stepwise execution/regrounding.
- If normal stepwise execution also fails, record feedback and tell the user
whether another demonstration of the same task would likely improve the
skill. Do not silently hand-code app-specific patches.
- Generated
SKILL.md files render a Skill Review section. After generating
or updating a skill, use it to briefly explain the new skill to the user.
This is part of the learning loop: if the user says the skill is wrong,
incomplete, or overfit, record another demonstration of the same task and use
Update Existing Skill Flow rather than hand-coding app-specific patches.
- Fast paths should use app-state checkpoints only at app entry or app
switches. Do not add per-step state checks. If the current package/activity
or stable entry UI text cannot be confirmed cheaply, stop fast execution and
use normal agent/LLM inspection or regrounding.
Derived Semantics Rules
Always inspect trace_digest.derived_semantics before choosing replay steps.
- Preserve
derived_semantics.pre_text_input_action_candidates as evidence
before the related type_parameter step.
- Use a pre-text candidate as a coordinate replay anchor only when
replay_allowed=true.
- When a pre-text candidate has
replay_allowed=false, do not turn it into a
tap_anchor. Use semantic grounding instead, usually tap_text for the
visible menu option or UI text, then continue with type_parameter.
- If a FAB/plus tap opens a menu and the next step should choose a visible
option such as Text/List/Image, prefer replaying the FAB/plus coordinate and
then
tap_text for the visible option instead of replaying every recorded
low-screen tap.
- Treat
derived_semantics.text_input_clusters as human typing evidence.
- Turn each text input cluster into a parameterized
type_parameter step,
usually with message_text.
- Do not replay individual soft-keyboard taps as
tap_anchor steps.
- Do not use anchors with
replay_allowed: false as replay targets. They are
evidence only.
- For send/confirm actions after typing, prefer
derived_semantics.post_text_input_action_candidates when present.
- For a message-send flow, the usual replay shape is:
- tap a conversation or composer anchor when needed
type_parameter with message_text
- tap the post-text send/confirm anchor
Grounding Rules
- Do not invent coordinates.
- Coordinate anchors must come from
trace_digest.allowed_anchors.
- For every
coordinate_anchor, include:
type: "coordinate_anchor"
x_norm and y_norm copied from an allowed anchor
source_anchor_id copied from the allowed anchor id
source_step_id
evidence naming the relevant step and screenshot/state evidence
confidence
- Do not use shorthand such as
"coordinate_anchor": "step_1_tap" in the final
candidate. Expand it to the full coordinate anchor object.
- If the trace does not support a semantic claim, write it as a warning.
- Do not put raw coordinates directly in candidate
steps; steps should target
named anchors or use parameterized actions.
Good Output Shape
{
"schema_version": "clawmobile.skill_candidate.v1",
"source_trace_id": "rec_...",
"task_summary": "The demo sends a parameterized message in an existing chat.",
"app": {
"package": "com.example",
"activity": "com.example.MainActivity"
},
"intent": {
"name": "send_current_chat_message",
"description": "Send a parameterized message in the currently open chat.",
"parameters": {
"message_text": {"type": "string", "required": true}
}
},
"preconditions": [
"The target chat or conversation is visible or can be opened from the recorded app state."
],
"entry_state_checks": {
"after_app_open": {
"package": "com.example",
"activity": "com.example.MainActivity",
"ui_text_any": ["stable visible entry text when the trace clearly shows one"]
}
},
"anchors": {
"message_input": {
"type": "coordinate_anchor",
"source_step_id": 2,
"source_anchor_id": "step_2_tap",
"x_norm": 0.48,
"y_norm": 0.93,
"evidence": ["step_2_tap", "before screenshot shows composer area"],
"confidence": 0.75
},
"send_button": {
"type": "coordinate_anchor",
"source_step_id": 8,
"source_anchor_id": "step_8_tap",
"x_norm": 0.93,
"y_norm": 0.56,
"evidence": ["post_text_action_1", "after text input cluster"],
"confidence": 0.7
}
},
"steps": [
{
"action": "tap_anchor",
"target": "message_input",
"verify_after": "A text input should be focused."
},
{
"action": "type_parameter",
"parameter": "message_text",
"verify_after": "The composer contains message_text."
},
{
"action": "tap_anchor",
"target": "send_button",
"verify_after": "The message appears as an outgoing bubble or the composer clears."
}
],
"verification": [
"Confirm the expected app/activity remains visible after the action."
],
"fallback": [
"If an anchor is not visible, stop and request a new demonstration or re-ground the UI."
],
"warnings": []
}
Final Response
After recording starts, keep the response short and tell the user to perform the
demo and reply when done.
After saving a candidate:
- Mention the saved candidate and summary paths.
- Mention the promoted primary generated skill path when promotion succeeds.
- Mention that the primary
SKILL.md is generalized, with fixed_SKILL.md
retained as source evidence.
- Mention the generalized skill JSON/markdown paths.
- Include a concise skill review: intent, parameters, steps, fast-path status,
and important uncertainties.
- If the user is not satisfied, tell them they can demonstrate the same task
again and the existing skill can be updated from the new trace.
- If future execution fails, suggest recording a correction demo from the failed
or desired starting state, then use
clawmobile_skill_update_from_trace.
- Mention validation warnings, especially rejected anchors.
- Do not claim the skill can execute yet.
Source: ClawMobile/ClawMobile — distributed by TomeVault.
1---2name: clawmobile-trace-induction3description: Record or summarize a ClawMobile demonstration and save a validated reusable skill candidate draft. Use when this capability is needed.4---56# ClawMobile Trace Induction78Use this skill when the user wants to record, demonstrate, summarize, induce,9draft, or convert a ClawMobile mobile task into a reusable skill candidate.1011This skill is **not** a skill executor. It records or reads a demonstration,12then creates human-readable and machine-readable draft artifacts for later13implementation. Do not replay the task or claim the candidate is production14ready.1516## Choose The Entry Point1718- If the user provides a recording directory or `trace.json`, use **Existing19 Trace Flow**.20- If the user provides an existing generated skill directory and a new21 recording/candidate for the same task, use **Update Existing Skill Flow**.22- If the user wants to create a candidate from a new human demonstration and no23 recording path is provided, use **Record Then Induce Flow**.24- If a recording is already active and the user says they are finished, continue25 from **Stop Recording And Induce**.2627Do not ask the user to read coordinates, label every step, or explain raw touch28events. The user should operate the phone naturally.2930## Record Then Induce Flow3132Use this flow when the user asks to record or create a new candidate skill from33a demonstration.34351. Pick a concise `task_hint` from the user's request, such as36 `wechat.send_message`. If the user intentionally asks to record the next37 demonstration without naming the task, use a generic hint such as38 `recorded_mobile_task` and infer the task later from trace evidence. Ask39 only when you cannot tell whether the user wants to record a new40 demonstration, update an existing skill, or process an existing trace.412. Call `clawmobile_record_start` with `task_hint`.423. Tell the user to perform the demonstration naturally on the phone and reply43 when finished.444. Stop here and wait for the user. Do not call `clawmobile_record_stop` until45 the user indicates the demonstration is complete.4647## Stop Recording And Induce4849Use this flow after the user says the demonstration is done.50511. Call `clawmobile_record_stop`.522. Use the returned `recording_dir` or `trace_path`.533. Continue immediately with **Existing Trace Flow**. Do not ask for another54 confirmation before generating the candidate.5556## Existing Trace Flow5758Use this flow when a recording directory or `trace.json` is already available.59601. Call `clawmobile_trace_prepare_summary`.61 - Use `recording_dir_or_trace_path`, `recording_dir`, or `trace_path`.62 - If the user did not provide a path and no just-finished recording is63 available, ask for the recording directory or `trace.json` path.642. Read the returned:65 - `trace_digest`66 - `trace_digest.derived_semantics`67 - `grounding_rules`68 - `candidate_schema`69 - `allowed_anchors`70 - screenshot paths and state snippets713. Think through the demonstrated task using only the returned trace evidence.724. Produce a JSON candidate that matches `candidate_schema`.735. Call `clawmobile_trace_save_skill_candidate` with the candidate JSON.746. If validation reports rejected anchors or missing anchor references, revise75 the candidate once using the same `trace_digest`, then call76 `clawmobile_trace_save_skill_candidate` again.777. If validation then passes with no rejected anchors, call78 `clawmobile_skill_candidate_promote` with the saved `skill_candidate_path`79 and `install: true`.808. Report the saved `skill_candidate_path`, `skill_summary_path`, promoted81 primary `SKILL.md` path, `fixed_SKILL.md` path, generated skill name,82 `generalized_skill.json`, `generalized_SKILL.md`, and any remaining83 warnings.849. Also give the user a short skill review:85 - what the skill does86 - required parameters87 - plain-language execution steps88 - whether fast path is available89 - important uncertainties or anchors that may need regrounding90 - how to improve it by recording another demonstration of the same task9192## Update Existing Skill Flow9394Use this flow when a generated skill already exists and the user records or95provides another demonstration for the same task.96971. First produce a validated `skill_candidate.json` for the new trace by using98 **Record Then Induce Flow** or **Existing Trace Flow**.992. Call `clawmobile_skill_update_from_trace` with:100 - `existing_skill_dir`: the existing generated skill directory101 - `new_recording_dir_or_candidate_path`: the new recording directory or102 `skill_candidate.json`1033. Read the returned validation and `anchor_updates`.1044. If validation fails because the intent, app, or required parameters do not105 match, stop and report that the new trace should create a separate skill.1065. If validation succeeds, report the updated primary `SKILL.md`,107 `generalized_skill.json`, source traces, evidence directory, anchor108 stability changes, and warnings.1096. Explain what changed in the skill and whether the new trace strengthened110 anchors, added a new entry state, or recorded a failure/correction pattern.111112Do not merge unrelated traces just because the app is the same. Evolution is113for the same task intent. Stable UI anchors such as composer or send buttons may114become stronger replay-first anchors when multiple traces agree. Context or115parameter anchors such as chats, contacts, files, and search results should stay116reground-friendly.117118## Candidate Rules119120- Use schema version `clawmobile.skill_candidate.v1`.121- Set `source_trace_id` to the trace id returned by prepare.122- Summarize the user's demonstrated intent in `task_summary`.123- Fill `app.package` and `app.activity` from trace state when available.124- Add an `intent` object with:125 - `name`: stable snake_case task name126 - `description`: concise human-readable task description127 - `parameters`: variable user inputs, such as `message_text`128- Add preconditions, verification rules, and fallback guidance that a future129 executor could use.130- Keep uncertain claims in `warnings` instead of pretending they are known.131132## Generalization Rules133134Promotion generates a merged skill directory. The primary `SKILL.md` is the135generalized skill. The fixed coordinate-heavy version is retained as136`fixed_SKILL.md` for evidence and rollback.137138- Treat the fixed candidate as concrete evidence, not as a universal rule.139- Separate task/procedure applicability from anchor applicability.140- If the user intent matches but a coordinate or UI location changed, the141 generalized skill should remain `applicable_with_regrounding` when a142 plausible grounding path exists.143- Do not add arbitrary contact, account, file, or object parameters unless the144 trace evidence or candidate parameters already support them.145- Keep uncovered parameters under `intent.not_covered_parameters`.146- Preserve uncertainty under `evolution.open_uncertainties` so future traces or147 failures can improve the skill.148- When multiple traces support the same skill, keep `source_traces`,149 per-anchor observations, and `evolution.anchor_updates` as evidence. Do not150 delete older trace evidence.151- Generated skills should record execution feedback with152 `clawmobile_skill_record_feedback` when it is low-friction and does not153 disrupt the user-facing task. Success feedback can stay compact with outcome,154 parameters, anchors, and verification summary. Failure or partial feedback is155 especially useful when it includes the failed step/anchor and concise156 observations so later trace updates or repairs have evidence. The feedback157 tool automatically extracts compact verified contexts and failure patterns158 into the generated skill's `evolution` block.159- Generated skills carry frontmatter/manifest metadata:160 `clawmobile_generated=true`, `feedback_tool=clawmobile_skill_record_feedback`,161 and `status_tool=clawmobile_skill_status`.162- Use `clawmobile_skill_status` when a generated skill's prior execution163 experience is needed in structured form.164- Generated `SKILL.md` files render a `Prior Execution Experience` section165 from feedback-derived guidance. Use it as evidence for grounding/fallback166 choices, not as a replacement for normal verification.167- Generated `SKILL.md` files may also render an eligible fast path. When it is168 eligible and required parameters are clear, prefer169 `clawmobile_skill_run_fast_path` before manually expanding every step. The170 tool returns structured failure artifacts so normal stepwise recovery remains171 available. Pass required skill variables under the top-level `parameters`172 object. If the exact required names are unclear, call173 `clawmobile_skill_status`; do not assume the runner lacks parameter support.174- If `clawmobile_skill_run_fast_path` fails, do not immediately abandon the175 fast path. First inspect the structured failure, current UI evidence, and176 prior execution status. If the failure looks like a repairable entry-state,177 text-query, or verifier mismatch, call178 `clawmobile_skill_reflect_fast_path_failure` with a concise diagnosis and one179 safe repair, then retry `clawmobile_skill_run_fast_path` once. Only after that180 retry fails should you switch to normal stepwise execution/regrounding.181- If normal stepwise execution also fails, record feedback and tell the user182 whether another demonstration of the same task would likely improve the183 skill. Do not silently hand-code app-specific patches.184- Generated `SKILL.md` files render a `Skill Review` section. After generating185 or updating a skill, use it to briefly explain the new skill to the user.186 This is part of the learning loop: if the user says the skill is wrong,187 incomplete, or overfit, record another demonstration of the same task and use188 **Update Existing Skill Flow** rather than hand-coding app-specific patches.189- Fast paths should use app-state checkpoints only at app entry or app190 switches. Do not add per-step state checks. If the current package/activity191 or stable entry UI text cannot be confirmed cheaply, stop fast execution and192 use normal agent/LLM inspection or regrounding.193194## Derived Semantics Rules195196Always inspect `trace_digest.derived_semantics` before choosing replay steps.197198- Preserve `derived_semantics.pre_text_input_action_candidates` as evidence199 before the related `type_parameter` step.200- Use a pre-text candidate as a coordinate replay anchor only when201 `replay_allowed=true`.202- When a pre-text candidate has `replay_allowed=false`, do not turn it into a203 `tap_anchor`. Use semantic grounding instead, usually `tap_text` for the204 visible menu option or UI text, then continue with `type_parameter`.205- If a FAB/plus tap opens a menu and the next step should choose a visible206 option such as Text/List/Image, prefer replaying the FAB/plus coordinate and207 then `tap_text` for the visible option instead of replaying every recorded208 low-screen tap.209- Treat `derived_semantics.text_input_clusters` as human typing evidence.210- Turn each text input cluster into a parameterized `type_parameter` step,211 usually with `message_text`.212- Do not replay individual soft-keyboard taps as `tap_anchor` steps.213- Do not use anchors with `replay_allowed: false` as replay targets. They are214 evidence only.215- For send/confirm actions after typing, prefer216 `derived_semantics.post_text_input_action_candidates` when present.217- For a message-send flow, the usual replay shape is:218 1. tap a conversation or composer anchor when needed219 2. `type_parameter` with `message_text`220 3. tap the post-text send/confirm anchor221222## Grounding Rules223224- Do not invent coordinates.225- Coordinate anchors must come from `trace_digest.allowed_anchors`.226- For every `coordinate_anchor`, include:227 - `type: "coordinate_anchor"`228 - `x_norm` and `y_norm` copied from an allowed anchor229 - `source_anchor_id` copied from the allowed anchor id230 - `source_step_id`231 - `evidence` naming the relevant step and screenshot/state evidence232 - `confidence`233- Do not use shorthand such as `"coordinate_anchor": "step_1_tap"` in the final234 candidate. Expand it to the full coordinate anchor object.235- If the trace does not support a semantic claim, write it as a warning.236- Do not put raw coordinates directly in candidate `steps`; steps should target237 named anchors or use parameterized actions.238239## Good Output Shape240241```json242{243 "schema_version": "clawmobile.skill_candidate.v1",244 "source_trace_id": "rec_...",245 "task_summary": "The demo sends a parameterized message in an existing chat.",246 "app": {247 "package": "com.example",248 "activity": "com.example.MainActivity"249 },250 "intent": {251 "name": "send_current_chat_message",252 "description": "Send a parameterized message in the currently open chat.",253 "parameters": {254 "message_text": {"type": "string", "required": true}255 }256 },257 "preconditions": [258 "The target chat or conversation is visible or can be opened from the recorded app state."259 ],260 "entry_state_checks": {261 "after_app_open": {262 "package": "com.example",263 "activity": "com.example.MainActivity",264 "ui_text_any": ["stable visible entry text when the trace clearly shows one"]265 }266 },267 "anchors": {268 "message_input": {269 "type": "coordinate_anchor",270 "source_step_id": 2,271 "source_anchor_id": "step_2_tap",272 "x_norm": 0.48,273 "y_norm": 0.93,274 "evidence": ["step_2_tap", "before screenshot shows composer area"],275 "confidence": 0.75276 },277 "send_button": {278 "type": "coordinate_anchor",279 "source_step_id": 8,280 "source_anchor_id": "step_8_tap",281 "x_norm": 0.93,282 "y_norm": 0.56,283 "evidence": ["post_text_action_1", "after text input cluster"],284 "confidence": 0.7285 }286 },287 "steps": [288 {289 "action": "tap_anchor",290 "target": "message_input",291 "verify_after": "A text input should be focused."292 },293 {294 "action": "type_parameter",295 "parameter": "message_text",296 "verify_after": "The composer contains message_text."297 },298 {299 "action": "tap_anchor",300 "target": "send_button",301 "verify_after": "The message appears as an outgoing bubble or the composer clears."302 }303 ],304 "verification": [305 "Confirm the expected app/activity remains visible after the action."306 ],307 "fallback": [308 "If an anchor is not visible, stop and request a new demonstration or re-ground the UI."309 ],310 "warnings": []311}312```313314## Final Response315316After recording starts, keep the response short and tell the user to perform the317demo and reply when done.318319After saving a candidate:320321- Mention the saved candidate and summary paths.322- Mention the promoted primary generated skill path when promotion succeeds.323- Mention that the primary `SKILL.md` is generalized, with `fixed_SKILL.md`324 retained as source evidence.325- Mention the generalized skill JSON/markdown paths.326- Include a concise skill review: intent, parameters, steps, fast-path status,327 and important uncertainties.328- If the user is not satisfied, tell them they can demonstrate the same task329 again and the existing skill can be updated from the new trace.330- If future execution fails, suggest recording a correction demo from the failed331 or desired starting state, then use `clawmobile_skill_update_from_trace`.332- Mention validation warnings, especially rejected anchors.333- Do not claim the skill can execute yet.334335---336> Source: [ClawMobile/ClawMobile](https://github.com/ClawMobile/ClawMobile) — distributed by [TomeVault](https://tomevault.io).337<!-- tomevault:4.0:skill_md:2026-06-17 -->