Agent skill

Verify Pagination

by reticlehq in reticlehq/reticle

Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled.

Apache-2.0Auto-check passed

Install Verify Pagination

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

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

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

At a glance

Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled.

  • Works in 4 steps: Record the first page → Load the next page, and name the… → Prove the rows are new, and none repeat → …
  • Infinite scroll was added
  • SKILL.md covers Confirm the session can observe, 1. Record the first page, 2. Load the next page, and… and 3. Prove the rows are new, and…, plus 2 more sections
  • Calls curl and npx; reaches docs.reticle.sh

What it does

Verify Pagination is an agent skill from reticlehq/reticle. Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled. Use when pagination or infinite scroll was added or changed, when a list shows the same rows twice or skips some, or when the last page still offers a next control.

Its SKILL.md is about 1.5k 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

  • Infinite scroll was added
  • A list shows the same rows twice
  • The last page still offers a next control

Example prompts

  • “/verify-pagination”

Requirements

  • Node.js

Workflow steps

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

  1. Record the first page
  2. Load the next page, and name the consequence first
  3. Prove the rows are new, and none repeat
  4. Prove the end of the list is handled

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 Pagination loads about 1.5k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 667 words of instructions outside code blocks.

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

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). 667 words, ~1,462 tokens.

Download SKILL.mdSave it as .claude/skills/verify-pagination/SKILL.md (or your agent's skills folder).
name
verify-pagination
description
Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled. Use when pagination or infinite scroll was added or changed, when a list shows the same rows twice or skips some, or when the last page still offers a next control.
license
Apache-2.0
metadata.version
3.7.0
metadata.homepage
https://www.reticle.sh
metadata.repository
https://github.com/reticlehq/reticle

The second page is where lists break

A list that renders its first page proves the first request works. The second page is where the offset is off by one, the cursor is reused, the same rows come back, or the append replaces what was there. The last page is where the "Next" button still fires a request for rows that do not exist.

Reticle can check all of that in the running app, against the requests the page really made. Not installed? RETICLE_INSTALL_SOURCE=npx_skill npx @reticlehq/server@latest init, then the install-and-verify skill.

Confirm the session can observe

reticle_session({ action: "list" })

A hidden or throttled tab can accept a click and render nothing, and an infinite scroll that loads on an intersection observer may never fire at all. If the session is not healthy, get a context that is, for example a leased tab (reticle_run({ tool: "reticle_lease", args: { action: "acquire", url } })). Otherwise report the run as blocked, not passed.

1. Record the first page

Write down what is on screen before you touch anything, or you have nothing to compare the next page against:

reticle_look({ action: "find", sessionId, by: "role", value: "row" })

Use whatever the rows really are (row, listitem, article, or a testid). Keep the visible text of every row, not a sample: a repeat from the middle of page 1 is as much a bug as one from the top. If the result says it was truncated, scope the find to the list (scope: "<the list's ref>") until it is not, or say which rows you could not see.

2. Load the next page, and name the consequence first

Name what must happen before the click, not after. For numbered or next/previous pagination, the page is replaced, so the first page's rows must be gone once the new request has answered:

reticle_act_and_wait({ sessionId, ref: "<next control>", action: "click", until: { kind: "allOf", predicates: [
  { kind: "net", urlContains: "/api/items", ok: true },
  { kind: "text", contains: "<first row of page 1>", absent: true },
  { kind: "text", contains: "<last row of page 1>", absent: true },
]}})

For "Load more" or infinite scroll, the page is appended, so the first page must still be there and the request must have answered. Use the action that really triggers the load: click for a "Load more" button, scrollIntoView on the list's end for a list that loads when scrolled.

reticle_act_and_wait({ sessionId, ref: "<load more button>", action: "click", until: { kind: "allOf", predicates: [
  { kind: "net", urlContains: "/api/items", ok: true },
  { kind: "text", contains: "<first row of page 1>" },
]}})

If the list pages on the client (all rows arrive in one response and the page only slices them), no request fires, and a net clause would wait for one that never comes. Drop it, keep the text clauses, and say in your report that the server's paging was not exercised.

urlContains must name the list's own endpoint. A predicate that any request satisfies proves nothing about this list.

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

3. Prove the rows are new, and none repeat

Read the rows again:

reticle_look({ action: "find", sessionId, by: "role", value: "row" })

Compare the text with what you recorded in step 1:

  • Paged: no row of page 2 may be any row of page 1. An overlap anywhere in the list means the offset or cursor did not move.
  • Appended: every page-1 row appears once, and the new ones follow them. A page-1 row that now appears twice means the batch was appended twice or re-fetched.

That comparison is evidence you read, so turn the result into a verdict. Take one row that is only on the new page and assert it:

reticle_assert({ sessionId, predicate: { kind: "text", contains: "<a row only on the new page>" } })

If the lists overlap, you have found the bug. Report which rows repeated, and do not report a pass.

4. Prove the end of the list is handled

Go to the last page (or scroll until the list stops growing) and prove the control is off:

reticle_assert({ sessionId, predicate: { kind: "anyOf", predicates: [
  { kind: "element", query: { role: "button", name: "Next" }, state: "disabled" },
  { kind: "element", query: { role: "button", name: "Next" }, absent: true },
]}})

For an infinite scroll, scroll to the end once more, then let the page go quiet before you claim it asked for nothing. An observer that fires after a delay would otherwise land after a zero reading had already passed:

reticle_act({ sessionId, ref: "<the list end>", action: "scrollIntoView" })
reticle_assert({ sessionId, timeout_ms: 5000, predicate: { kind: "allOf", predicates: [
  { kind: "settled", quietMs: 1500 },
  { kind: "net", urlContains: "/api/items", count: 0 },
]}})

A list that keeps requesting pages past the end is a real finding even when nothing new renders.

Honesty

Only verified: "yes" is a pass. For a client-side list, a yes covers the rows you asserted and nothing about the server: say so. Say which endpoint you asserted on, and report any step you could not reach as unknown, not passed.


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

Open the folder on GitHubat commit 178e5c0

Compare with similar skills

Verify Pagination 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 Pagination compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Verify Pagination this skillreticlehq/reticle1.2k—~1.5kAutomated safety check: PassApache-2.0
Paginationthedaviddias/Front-End-Checklist74k—~699Automated safety check: PassMIT
Batchasgeirtj/system_prompts_leaks69k—~1.3kAutomated safety check: PassCC0-1.0
Batchcodewhale-hq/Codewhale41k—~157Automated safety check: PassMIT
Pagination Accessibilitythedaviddias/Front-End-Checklist74k—~405Automated safety check: PassMIT
Batch Filesgithub/awesome-copilot40k1 repos~4.3kAutomated safety check: PassMIT

Similar skills

  • Pagination

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing paginated content (blog archives, product category pages, search results).

    74k GitHub stars~699 tokensUpdated 4 days ago
    Auto-check passed
  • Batch

    asgeirtj/system_prompts_leaks

    Research and plan a large-scale change, then execute it in parallel across 5–30 isolated worktree agents that each open a PR.

    69k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Batch

    codewhale-hq/Codewhale

    Break a large, parallelizable goal into bounded work units, coordinate existing agent/worktree machinery, integrate, and verify.

    41k GitHub stars~157 tokensUpdated today
    DevelopmentAuto-check passed
  • Pagination Accessibility

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing templates, rendered HTML, or shared components related to Make pagination accessible.

    74k GitHub stars~405 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Batch Files

    github/awesome-copilot

    Official

    Expert-level Windows batch file (.bat/.cmd) skill for writing, debugging, and maintaining CMD scripts.

    40k GitHub starsUsed in 1 repo~4.3k tokens
    DevelopmentAuto-check passed
  • Batch API Planner

    QwenLM/qwen-code

    Prepares many-file, single-turn transforms such as translating or rewriting as a plan, then submits it to the asynchronous, half-price DashScope Batch API through the qwen batch CLI.

    28k GitHub stars~2.2k tokensUpdated today
    Productivity & AutomationAuto-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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    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 yesterday
    Auto-check passed

Questions about Verify Pagination

What does Verify Pagination do?

Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled. Verify Pagination is an agent skill from reticlehq/reticle. Prove the next page of a list, or the next batch of an infinite scroll, loads NEW rows from the server, repeats none, and that the end of the list is handled.

When should I use Verify Pagination?

Verify Pagination fits situations like: infinite scroll was added; A list shows the same rows twice; the last page still offers a next control.

How do I install Verify Pagination in Claude Code?

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

How do I install Verify Pagination in Codex?

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

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

What does Verify Pagination need to run?

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

Does Verify Pagination 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 Pagination 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 Pagination use?

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

About 1.5k tokens (SKILL.md is roughly 5.8k 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 Pagination?

Skills that share tags, products or a category with Verify Pagination: Pagination (thedaviddias/Front-End-Checklist, 74k stars), Batch (asgeirtj/system_prompts_leaks, 69k stars), Batch (codewhale-hq/Codewhale, 41k stars) and Pagination Accessibility (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Verify Pagination?

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.