Agent skill

Verify Optimistic Update

by reticlehq in reticlehq/reticle

Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds.

Apache-2.0Auto-check passed

Install Verify Optimistic Update

skills CLI
$ npx skills add reticlehq/reticle --skill verify-optimistic-update -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install reticlehq/reticle verify-optimistic-update --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/reticlehq/reticle.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/verify-optimistic-update .claude/skills/verify-optimistic-update && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
verify-optimistic-update
GitHub stars
1.2k
Token cost
~1.3k tokens
SKILL.md length
523 words
Files
1
Skills in repo
19
Repo updated
First seen
Licence
Apache-2.0

At a glance

Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds.

  • Works in 4 steps: Make the save fail, slowly → Act, and prove the optimistic state… → Prove it reverts, and says why → …
  • Add-to-cart updates instantly
  • SKILL.md covers Read this before you start:…, 1. Make the save fail, slowly, 2. Act, and prove the… and 3. Prove it reverts, and says…, plus 2 more sections
  • Calls curl and npx; reaches docs.reticle.sh

What it does

Verify Optimistic Update is an agent skill from reticlehq/reticle. Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds. Use when a like, toggle, rename, reorder, delete or add-to-cart updates instantly, when an optimistic update was added or changed, or when a user reports a change that "saved" but was gone after a reload.

Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: AI agents can generate code, but still struggle to understand what they build. Reticle brings Jev-style machine-native runtime perception to web & desktop applications. The licence is Apache-2.0.

When your agent uses it

  • Add-to-cart updates instantly
  • An optimistic update was added
  • A user reports a change that saved but was gone after a reload

Example prompts

  • “/verify-optimistic-update”

Requirements

  • Node.js

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Make the save fail, slowly
  2. Act, and prove the optimistic state appears
  3. Prove it reverts, and says why
  4. Remove the mock, and prove success sticks

What it can do on your machine

Read from SKILL.md and the folder at commit 178e5c0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • docs.reticle.sh

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Verify Optimistic Update loads about 1.3k tokens when it runs. Until then it costs about 93 tokens; SKILL.md has 523 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~93
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from reticlehq/reticle at commit 178e5c0, republished under its Apache-2.0 licence (© reticlehq). 523 words, ~1,308 tokens.

Download SKILL.mdSave it as .claude/skills/verify-optimistic-update/SKILL.md (or your agent's skills folder).
name
verify-optimistic-update
description
Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds. Use when a like, toggle, rename, reorder, delete or add-to-cart updates instantly, when an optimistic update was added or changed, or when a user reports a change that "saved" but was gone after a reload.
license
Apache-2.0
metadata.version
3.7.0
metadata.homepage
https://www.reticle.sh
metadata.repository
https://github.com/reticlehq/reticle

An optimistic update is a promise the server can break

Updating the UI before the server answers makes an app feel fast. It also means the UI claims something the server has not agreed to yet. The failure path, where the request fails and the UI has to take the claim back, is the one nobody clicks through, because on a working backend it never happens.

Reticle can make it happen in the running app. Not installed? RETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest init, then the install-and-verify skill.

Read this before you start: failing a request needs a browser Reticle owns

reticle_network_mock works in a leased tab (reticle_run({ tool: "reticle_lease", args: { action: "acquire", url } })) or a driven one, and not through the always-on SDK, which answers { ok: false, reason: "no-cdp-provider" }. Without one, do step 4 (the success path) and report the rollback as unknown. Driving the happy path and reporting that rollback works is the one thing you may not do.

Confirm the session can observe first: reticle_session({ action: "list" }). A hidden or throttled tab can accept a click and render nothing.

1. Make the save fail, slowly

reticle_run({ tool: "reticle_network_mock", sessionId, args: {
  mocks: [{ urlContains: "/api/todos", method: "PATCH", status: 500, delayMs: 1500 }],
}})

The delay is what makes the optimistic state observable. Without it the failure can land before anything is on screen, and you cannot tell "rolled back" from "never updated".

2. Act, and prove the optimistic state appears

Get the control's ref with reticle_look({ action: "page", sessionId, mode: "interactive" }), then name the optimistic state before you click:

reticle_act_and_wait({ sessionId, ref: "<rename or toggle>", action: "click", until:
  { kind: "text", contains: "Buy oat milk" }
})

This proves the UI updated before the server answered. It is the claim the next step checks is taken back.

3. Prove it reverts, and says why

Once the request has failed, the new value must be gone, the old one back, and the user told. Name the app's real failure message, scoped to its alert, because any other alert already on the page would satisfy a bare role check:

reticle_assert({ sessionId, timeout_ms: 5000, predicate: { kind: "allOf", predicates: [
  { kind: "net", urlContains: "/api/todos", method: "PATCH", status: 500 },
  { kind: "text", contains: "Buy oat milk", absent: true },
  { kind: "text", contains: "Buy milk" },
  { kind: "text", contains: "Could not save", scope: "[role=alert]" },
  { kind: "console", level: "error", absent: true },
]}})

If the app keeps its state in a registered store, check the store too, because a UI can roll back on screen while the store keeps the optimistic value:

reticle_assert({ sessionId, predicate: { kind: "state", path: "todos.0.title", equals: "Buy milk" } })
Show full SKILL.md (183 more words)Show less

4. Remove the mock, and prove success sticks

Clear the mock, then make the same change again from the state the rollback left. The ref from step 2 may be stale after a re-render, and a rename needs its new value entered again, so read the page first:

reticle_run({ tool: "reticle_network_mock", sessionId, args: { clear: true } })
reticle_look({ action: "page", sessionId, mode: "interactive" })

Redo whatever set up the edit (for a rename, reticle_act the field with the new value), then save and name the outcome:

reticle_act_and_wait({ sessionId, ref: "<save or toggle>", action: "click", until: { kind: "allOf", predicates: [
  { kind: "net", urlContains: "/api/todos", method: "PATCH", ok: true },
  { kind: "text", contains: "Buy oat milk" },
]}})

Then reload and prove the server kept it, which is what "saved" means. Use a real reload and wait for the new page, not a navigate to the URL you are already on:

reticle_navigate({ sessionId, reload: true })

It must answer confirmed: true with a sessionId. Assert on that session, which is the reloaded page:

reticle_assert({ sessionId: "<sessionId from the reload>", predicate: { kind: "text", contains: "Buy oat milk" } })

If the reload is not confirmed, report persistence as unknown.

Honesty

Only verified: "yes" is a pass. A verdict taken under a mock is about the mocked condition, so say which endpoint you failed and with what status. Clear every mock before handing back, or the next session sees a backend that fails every save.


Capability reference: curl https://docs.reticle.sh/capabilities.md. Everything else: curl https://docs.reticle.sh/llms.txt.

© reticlehq, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/verify-optimistic-update of reticlehq/reticle.

Open the folder on GitHubat commit 178e5c0

Compare with similar skills

Verify Optimistic Update next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Verify Optimistic Update compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verify Optimistic Update this skillreticlehq/reticle1.2k—~1.3kAutomated safety check: PassApache-2.0
Effect Atom Optimistic UpdatesUsefulSoftwareCo/executor4.1k—~2.5kAutomated safety check: PassMIT
Openclaw Updateopenclaw/openclaw392k—~1.5kAutomated safety check: PassMIT
Update Docsvercel/next.js143k—~1.9kAutomated safety check: PassMIT
UI Updatesickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT
Update Team Serveropenclaw/openclaw392k—~3.8kAutomated safety check: PassMIT

Similar skills

  • Effect Atom Optimistic Updates

    UsefulSoftwareCo/executor

    Pattern for implementing optimistic UI updates with effect-atom in this codebase.

    4.1k GitHub stars~2.5k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Openclaw Update

    openclaw/openclaw

    Route routine updates of an existing local or remote OpenClaw Gateway to its installation owner, with automatic session recovery.

    392k GitHub stars~1.5k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Update Docs

    vercel/next.js

    Official

    This skill should be used when the user asks to "update documentation for my changes", "check docs for this PR", "what docs need updating", "sync docs with code", "scaffold docs for this feature"…

    143k GitHub stars~1.9k tokensUpdated today
    Documents & OfficeAuto-check passed
  • UI Update

    sickn33/agentic-awesome-skills

    Update StyleSeed engine in your project — analyzes what's outdated and updates safely

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • Update Team Server

    openclaw/openclaw

    Update the operator-configured Team server through its canonical owner; trust native validation and acceptance without duplicate checks or schedulers.

    392k GitHub stars~3.8k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Update Specification

    github/awesome-copilot

    Official

    Update an existing specification file for the solution, optimized for Generative AI consumption based on new requirements or updates to any existing code.

    40k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed

More from reticlehq/reticle

All 19 skills in this repo
  • Agentic TDD

    reticlehq/reticle

    Applies red-green TDD to behavior unit tests cannot reach, by stating the expected outcome against the running app with Reticle before writing the feature.

    1.2k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Whole-App Health Sweep

    reticlehq/reticle

    Sweeps a running web app by clicking every reachable control, then reports dead buttons, console errors, failed requests and mismatches between API data and the screen.

    1.2k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Broken UI Debugger

    reticlehq/reticle

    Finds why a running web app misbehaves when the console is empty and the code looks fine, by reading the click, request, store and console together.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Drives and verifies Electron or Tauri desktop apps through Reticle, which sees the renderer and the IPC calls that a browser-based testing tool cannot observe.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Finds out why a passing test suite sits on top of a broken app by comparing what the running app does with what the tests claim, using Reticle.

    1.2k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Fix What I Pointed At

    reticlehq/reticle

    Picks up bugs a person flagged by pointing at elements in the running app, each mark carrying the element, their note and the source file and line, then fixes and verifies them.

    1.2k GitHub stars~878 tokensUpdated today
    Auto-check passed

Questions about Verify Optimistic Update

What does Verify Optimistic Update do?

Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds. Verify Optimistic Update is an agent skill from reticlehq/reticle. Prove a UI that updates before the server answers puts things back and says so when the request fails, and keeps the change when it succeeds.

When should I use Verify Optimistic Update?

Verify Optimistic Update fits situations like: add-to-cart updates instantly; an optimistic update was added; A user reports a change that saved but was gone after a reload.

How do I install Verify Optimistic Update in Claude Code?

Run `npx skills add reticlehq/reticle --skill verify-optimistic-update -a claude-code`. Or copy the skill folder (skills/verify-optimistic-update in reticlehq/reticle) into .claude/skills/verify-optimistic-update in your project. Claude Code loads it when a task matches its description.

How do I install Verify Optimistic Update in Codex?

Run `npx skills add reticlehq/reticle --skill verify-optimistic-update -a codex`. Or copy the skill folder (skills/verify-optimistic-update in reticlehq/reticle) into .agents/skills/verify-optimistic-update in your project. Codex loads it when a task matches its description.

Can I use Verify Optimistic Update in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add reticlehq/reticle --skill verify-optimistic-update -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/verify-optimistic-update, .gemini/skills/verify-optimistic-update, .github/skills/verify-optimistic-update and .opencode/skills/verify-optimistic-update in your project.

What does Verify Optimistic Update need to run?

Going by SKILL.md and its folder, Verify Optimistic Update needs the command-line tools its instructions call (curl and npx). Our summary lists: Node.js.

Does Verify Optimistic Update access the network?

SKILL.md names 1 domain. In commands or code: docs.reticle.sh; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Verify Optimistic Update safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Verify Optimistic Update use?

Verify Optimistic Update is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Verify Optimistic Update use?

About 1.3k tokens (SKILL.md is roughly 5.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Verify Optimistic Update?

Skills that share tags, products or a category with Verify Optimistic Update: Effect Atom Optimistic Updates (UsefulSoftwareCo/executor, 4.1k stars), Openclaw Update (openclaw/openclaw, 392k stars), Update Docs (vercel/next.js, 143k stars) and UI Update (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verify Optimistic Update?

reticlehq (a GitHub organization) maintains it in reticlehq/reticle, which has 1,197 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 9, 2026.

Source: reticlehq/reticle on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.