cross-layer-verifylisted
Install: claude install-skill 88plug/os-control-mcp
# Cross-layer action verification
One sense lies. A screenshot can't tell a spinner from a frozen app; systemd can't
see a dialog. Fuse both and you can tell a real success from a no-op — the thing that
makes long-horizon work survivable. This skill encodes the loop:
**`begin` → act → read both senses → `end` → reconcile.**
## The loop
1. **`os_verify` `action=begin`** — snapshot the baseline. Pass the `units` the action
should affect (e.g. `["nginx.service"]`), optionally `expect` (unit → wanted state,
e.g. `{"nginx.service": "active"}`), and `scope` (`system`|`user`). Keep the returned
`token`.
2. **Perform the action** with whatever tool does it — a `screen_click` on the GUI
button, an `os_service` restart, a manual step.
3. **Read the pixel signal** (only if a GUI was involved). Two options:
- **`screen_verify`** — preferred. It *polls* until the screen settles or a timeout,
grades the GUI itself (`CONFIRMED`/`PARTIAL`/`NO_OP`/`DIVERGED`), and returns a
`pixel` block ready to hand straight to step 4. Takes `expect_text` / `expect_gone`
/ `expect_change`, so you can assert the button's effect rather than just "something
moved". Use this when the GUI effect may take a moment to appear.
- **`screen_sense`** — passive. Returns `{"pixel": {changed, opened, modal, no_op,
activity}}` for whatever the *last* action already left behind, with no waiting. Use
it when the action is known to be instantaneous, or when you have already