Agent skill

Verify Unattended

by reticlehq in reticlehq/reticle

Install, instrument and verify a web app end to end without pausing for a human.

Apache-2.0Auto-check passedAgent Workflows

Install Verify Unattended

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

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

GitHub CLI
$ gh skill install reticlehq/reticle verify-unattended --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-unattended .claude/skills/verify-unattended && 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-unattended
GitHub stars
1.2k
Token cost
~1.9k tokens
SKILL.md length
1,107 words
Files
1
Skills in repo
19
Repo updated
First seen
Licence
Apache-2.0

At a glance

Install, instrument and verify a web app end to end without pausing for a human.

  • Works in 5 steps: wire it, once, quietly → make sure the app is actually running → get a page connected → …
  • Agent Workflows work in your project
  • SKILL.md covers The one rule that makes this…, Step 1: wire it, once, quietly, Step 2: make sure the app is… and Step 3: get a page connected, plus 5 more sections
  • Calls npx

What it does

Verify Unattended is an agent skill from reticlehq/reticle. Install, instrument and verify a web app end to end without pausing for a human. Use in an autonomous or goal-mode agent, in CI, or in any client that asks for approval on every command: it never says "restart your client" or "open a browser", because it takes a route that needs neither. Prefer the normal install-and-verify skill when a human is present and can answer.

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

It sits in Agent Workflows. 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

  • Agent Workflows work in your project

Example prompts

  • “restart your client”
  • “open a browser”
  • “/verify-unattended”

Requirements

  • Node.js

Workflow steps

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

  1. wire it, once, quietly
  2. make sure the app is actually running
  3. get a page connected
  4. the verdict
  5. read the verdict honestly

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:

    • npx

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

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    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 Unattended loads about 1.9k tokens when it runs. Until then it costs about 97 tokens; SKILL.md has 1,107 words of instructions outside code blocks.

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

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). 1,107 words, ~1,925 tokens.

Download SKILL.mdSave it as .claude/skills/verify-unattended/SKILL.md (or your agent's skills folder).
name
verify-unattended
description
Install, instrument and verify a web app end to end without pausing for a human. Use in an autonomous or goal-mode agent, in CI, or in any client that asks for approval on every command: it never says "restart your client" or "open a browser", because it takes a route that needs neither. Prefer the normal install-and-verify skill when a human is present and can answer.
license
Apache-2.0
metadata.version
3.7.0
metadata.homepage
https://www.reticle.sh
metadata.repository
https://github.com/reticlehq/reticle

Reticle, unattended

Same product, same verdicts, one difference: nothing here waits for a human.

The normal skill has two places where it hands control back: "restart your client so it picks up the MCP server" and "open the app in a browser". Both are correct when someone is sitting there. In goal mode they are dead ends: the restart ends the context holding these instructions, and there is nobody to open a tab.

So this skill takes the route that needs neither, and stops only when it has a verdict or a reason.

The one rule that makes this work

You cannot add MCP tools to your own running process. No slash command, no config edit, no re-registration reaches the tool list you already have. Your client read it before Reticle existed. Do not try, and do not ask to be restarted.

Instead, branch once on what you already have:

  • reticle_* tools present → drive with them. Best evidence, source-mapped, full verdicts.
  • not present → use the CLI. reticle verify produces a verdict and an exit code with no MCP involvement at all.

Both routes end in a verdict. Pick the one your process allows and go.

Step 1: wire it, once, quietly

export RETICLE_INSTALL_SOURCE=npx_skill
npx -y @reticlehq/server@latest init

The export is on its own line on purpose. Every other copy of this command carries the marker inline, but this skill runs where commands are matched against a prefix allowlist (see "Keep commands plain" below), and RETICLE_INSTALL_SOURCE=... npx ... no longer starts with npx. Inline, it would stop matching the very rule this file tells you to rely on.

Then read the report rather than assuming it. Two lines matter:

  • ⚠ on the app's build config: the wiring did not land. Apply the printed edit yourself; do not carry on as if it had.
  • ℹ naming a version fallback: the pinned SDK was refused and a different one installed. The SDK and the daemon must agree; if a later call reports a protocol error, this is why.

init is idempotent. A step reading already wired is a pass, not a skip.

If init reports every step already done, the app was instrumented before you arrived. That is fine, but it means this run has not proved the install. Say so rather than claiming you set it up.

Step 2: make sure the app is actually running

The daemon needs a page to look at, and a page needs a server. Do not ask whether to start one.

  1. Read the dev script out of package.json.
  2. Start it in the background, on the port the script implies.
  3. Poll the port until it answers. A dev server that has to compile a route can take 30 seconds on first hit; a timeout here is not a failure yet.

If a server is already listening on that port, use it. Starting a second one on a different port gives you an app nobody is verifying, and leaves a process behind.

Restarting matters after init. A build plugin added to a config the running server already read is not in the bundle. If the server was up before step 1, restart it now or nothing you do next will find an instrumented page.

Step 3: get a page connected

With the MCP tools:

reticle_session { action: "list" }

A listed session is the proof. Nothing else in this skill can tell you anything about the app until one appears.

No session, and no human to open a tab? Take one yourself:

reticle_run { tool: "reticle_lease", args: { action: "acquire", url: "http://localhost:<port>/" } }

The lease opens a browser Reticle owns and drives. It is the whole answer to "there is nobody here to open the page".

Without the MCP tools, skip to step 4: verify opens its own browser.

Show full SKILL.md (497 more words)Show less

Step 4: the verdict

Declare the consequence before you act. This is the difference between a check and a rationalisation, and it is the entire reason this tool exists:

reticle_act_and_wait { ref, action, until: { … } }

Assert what the app did, not what it shows. A UI that renders the value it just sent, rather than the value the server returned, passes every DOM-level check ever written:

until: { kind: "net", method: "POST", urlContains: "/api/refund",
         status: 200, bodyContains: "\"refunded\":1187.01" }

bodyContains reads the response: what the server answered. It needs body capture, which init writes into the app's config; if a verdict comes back outcome_unread, that is what is missing.

Without the MCP tools:

npx @reticlehq/server verify http://localhost:<port>/

Exit 0 is a pass. It drives the app and re-verifies saved flows, so if the project has none, it will tell you nothing was checked. That is not a pass. Record one first, or say plainly that there was nothing to verify.

Step 5: read the verdict honestly

  • verified: "yes": proved. Say what held.
  • verified: "no": the app is wrong, or your expectation was. Both are results. Report it.
  • verified: "unknown": Reticle drove the app and could not tell. Not a pass. Never round it up, and never weaken the assertion until it goes green. That converts a real signal into a false one, which is the failure this product exists to prevent.

A drive that ends without act_and_wait or assert has no result, however many tools it used.

When you are genuinely stuck

Stop and say which of these it is. A precise dead end beats a green report.

What you seeWhat it means
tools absent, verify says no saved flowsnothing to verify yet: record a flow, or report that
reticle_session { action: "list" } empty, port listeningthe bundle has no SDK: restart the dev server after init
verified: "unknown", outcome_unreadthe response body was not recorded: check the plugin options init wrote
lease loads the page but never connectsthe app refused to dial; on a non-localhost host it needs a pairing token as well as allowNonLocalhost

Notes for approval-gated clients

Some clients ask a human to approve each command. Two things reduce that to near zero:

  • Keep commands plain. npx @reticlehq/server init matches a prefix rule; the same command wrapped in a subshell or a $(…) usually does not.
  • Expect one prompt about the home directory. The daemon keeps its state in ~/.reticle, which is outside the workspace. Approving that family once covers every later call.

If your client offers an autonomous or goal mode, this skill is written for it. Turn it on before starting rather than approving forty prompts. Approval fatigue is a real reason runs are abandoned half-installed, with the tools connected and nothing ever verified.

Report feedback

Reticle is built for agents, so your experience is the signal that decides what gets fixed, and it disappears when your context does. One call, then carry on:

reticle_session { action: "feedback", kind: "bug" | "gap" | "ambiguity" | "feature_request" | "improvement" | "experience", text: "…" }

Unreachable? npx @reticlehq/server feedback --agent --kind <kind> "what happened". Report defects in Reticle; a bug you find in the app under test is Reticle working, and belongs in your answer.

© 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-unattended of reticlehq/reticle.

Open the folder on GitHubat commit 178e5c0

Compare with similar skills

Verify Unattended 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 Unattended compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verify Unattended this skillreticlehq/reticle1.2k—~1.9kAutomated safety check: PassApache-2.0
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official38k10 repos~4.1kAutomated safety check: NotesApache-2.0
Using Superpowersfarm-fe/farm5.6k36 repos~1.4kAutomated safety check: PassMIT
Executing Plans Inlineobra/superpowers297k2 repos~5.1kAutomated safety check: PassMIT
Skill CreatorAzure/azqr79689 repos~8.2kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    38k GitHub starsUsed in 10 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Using Superpowers

    farm-fe/farm

    A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions

    5.6k GitHub starsUsed in 36 repos~1.4k tokens
    Agent WorkflowsAuto-check passed
  • Executing Plans Inline

    obra/superpowers

    Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.

    297k GitHub starsUsed in 2 repos~5.1k tokens
    Agent WorkflowsAuto-check passed
  • Skill Creator

    Azure/azqr

    Official

    Create new skills, modify and improve existing skills, and measure skill performance.

    796 GitHub starsUsed in 89 repos~8.2k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Agent Development

    anthropics/claude-plugins-official

    Official

    Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.

    38k GitHub starsUsed in 7 repos~2.8k tokens
    Agent WorkflowsAuto-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 2 days ago
    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 2 days ago
    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 2 days ago
    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 2 days ago
    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 2 days ago
    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 2 days ago
    Auto-check passed

Categories

Questions about Verify Unattended

What does Verify Unattended do?

Install, instrument and verify a web app end to end without pausing for a human. Verify Unattended is an agent skill from reticlehq/reticle. Install, instrument and verify a web app end to end without pausing for a human.

When should I use Verify Unattended?

Verify Unattended fits situations like: agent Workflows work in your project.

How do I install Verify Unattended in Claude Code?

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

How do I install Verify Unattended in Codex?

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

Can I use Verify Unattended 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-unattended -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-unattended, .gemini/skills/verify-unattended, .github/skills/verify-unattended and .opencode/skills/verify-unattended in your project.

What does Verify Unattended need to run?

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

Does Verify Unattended access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Verify Unattended 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 Unattended use?

Verify Unattended 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 Unattended use?

About 1.9k tokens (SKILL.md is roughly 7.7k 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 Unattended?

Skills that share tags, products or a category with Verify Unattended: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verify Unattended?

reticlehq (a GitHub organization) maintains it in reticlehq/reticle, which has 1,199 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.