Official agent skill

Sync Capability Validator

by makenotion in makenotion/workers-template

Checks a Workers sync capability against a list of common bugs, such as stuck cursors, endless pagination and lost deletions, and reports by severity.

OfficialMITAuto-check: notesDevelopment

Install Sync Capability Validator

skills CLI
$ npx skills add makenotion/workers-template --skill sync-validate -a claude-code

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

GitHub CLI
$ gh skill install makenotion/workers-template sync-validate --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/makenotion/workers-template.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/sync-validate .claude/skills/sync-validate && 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
sync-validate
GitHub stars
439
Used in
1 other repo
Token cost
~1.2k tokens
SKILL.md length
673 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Checks a Workers sync capability against a list of common bugs, such as stuck cursors, endless pagination and lost deletions, and reports by severity.

  • Works in 6 steps: No pagination termination: Does hasMore… → Cursor doesn't advance: Does nextState… → Missing first-run handling: When state… → …
  • Reviewing a new sync capability before it ships
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Debugging a sync that loops forever or re-fetches the same records

What it does

Each sync found in `src/index.ts` and the modules it imports is run through a numbered checklist, and findings come back grouped by severity. Before starting, the agent reads `.agents/skills/sync-guide/SKILL.md` for the underlying sync concepts, and its tools are limited to Read, Glob, Grep and Bash.

Critical checks cover pagination that never ends because `hasMore` never turns false, a `nextState` cursor that does not advance, missing handling of an undefined first-run state, batches of thousands of changes instead of about 100, replace mode where the source API offers change tracking, and misunderstanding that an incremental cursor persists between cycles. Structural checks look at bi-modal correctness: separate backfill and delta phases, and a delta cursor seeded from a marker taken before the backfill began. The description also lists consistency buffers and deletion handling.

When your agent uses it

  • Reviewing a new sync capability before it ships
  • Debugging a sync that loops forever or re-fetches the same records
  • Deciding how to add incremental updates to a sync that currently replaces everything

Example prompts

  • “Review the sync in src/index.ts for cursor and pagination bugs.”
  • “My sync keeps fetching the same page. Check whether nextState advances.”
  • “Audit our backfill and delta syncs for lost changes and missed deletions.”

Requirements

  • A Workers project with syncs defined in src/index.ts
  • Pre-approved tools (allowed-tools): Read, Glob, Grep, Bash

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. No pagination termination: Does hasMore eventually become false? Look for: infinite loops where nextState doesn't advance, missing base…
  2. Cursor doesn't advance: Does nextState change between iterations? If the cursor is the same as the previous state, the sync will loop…
  3. Missing first-run handling: When state is undefined (first run), does the code handle it gracefully? Look for: state.cursor without…
  4. Batch too large: Is the sync returning thousands of changes in one execution? Recommend batches of ~100. Large batches will fail.
  5. Replace mode when API supports change tracking: If mode is replace (or unset — it defaults to replace), does the source API support…
  6. State persistence misunderstanding: In incremental mode, the cursor never resets between cycles. The next cycle starts exactly where the…

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Glob
    • Grep
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

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

  • Network

    No URLs in SKILL.md.

    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

Sync Capability Validator loads about 1.2k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 673 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Glob, Grep, Bash

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 makenotion/workers-template at commit 681d89d, republished under its MIT licence (© makenotion). 673 words, ~1,218 tokens.

Download SKILL.mdSave it as .claude/skills/sync-validate/SKILL.md (or your agent's skills folder).
name
sync-validate
description
Review a sync capability for common bugs — cursor advancement, pagination termination, state persistence, bi-modal correctness, consistency buffers, and deletion handling
allowed-tools
Read, Glob, Grep, Bash
user-invocable
true
disable-model-invocation
true

Instructions

Read the sync capabilities in src/index.ts (and any imported modules). For each sync found, run through the checklist below. Report findings grouped by severity.

Before starting, read .agents/skills/sync-guide/SKILL.md for the full sync concepts reference.

Critical Issues (will break the sync or cause data loss)
  1. No pagination termination: Does hasMore eventually become false? Look for: infinite loops where nextState doesn't advance, missing base cases, conditions that can never be met.

  2. Cursor doesn't advance: Does nextState change between iterations? If the cursor is the same as the previous state, the sync will loop forever. Check that each execute call makes progress.

  3. Missing first-run handling: When state is undefined (first run), does the code handle it gracefully? Look for: state.cursor without state?.cursor, property access on potentially undefined state.

  4. Batch too large: Is the sync returning thousands of changes in one execution? Recommend batches of ~100. Large batches will fail.

  5. Replace mode when API supports change tracking: If mode is replace (or unset — it defaults to replace), does the source API support updated_at filters, event feeds, or similar change tracking? If so, recommend a replace-mode backfill plus a separate incremental delta sync sharing the same database. Do not recommend switching the existing sync directly to incremental, because that loses initial-load and mark-and-sweep behavior.

  6. State persistence misunderstanding: In incremental mode, the cursor never resets between cycles. The next cycle starts exactly where the last one left off. Check for code that assumes a fresh start each cycle — this will cause records to be re-fetched or skipped permanently.

Structural Issues (bi-modal correctness)
  1. Single-mode cursor for incremental sync: Is the sync using the same cursor strategy for both backfill and delta? Unless the API sorts by updated_at and uses an opaque cursor (where one cursor naturally serves both), the sync should have a discriminated state union with separate backfill and delta phases.

  2. Missing backfill-to-delta transition: For bi-modal syncs, how is the delta cursor seeded? It must come from a marker captured before the backfill started (event anchor, timestamp with overlap), NOT from the last record in the backfill. Otherwise, changes during the backfill window are lost permanently.

  3. No overlap in transition: When transitioning from backfill to delta, is there an overlap window (e.g., backfillStartedAt - 5 minutes)? Without overlap, records modified during the backfill but before the delta cursor starts are missed permanently.

Show full SKILL.md (278 more words)Show less
Warnings (may cause subtle data quality bugs)
  1. No consistency buffer: For incremental syncs hitting eventually consistent APIs, the cursor should lag behind "now" by 10-60 seconds. Without this, the cursor can advance past records that haven't been indexed by the source API yet — those records are lost permanently since the cursor never resets.

  2. Timestamp cursor without tie-breaking: If using updated_at as a cursor, can multiple records share the same timestamp? If yes (batch imports, bulk updates, low-resolution timestamps), recommend the keyset pattern: (timestamp, id) with a query like WHERE ts > X OR (ts = X AND id > Y).

  3. Missing delete handling: In incremental mode, are deletions handled? Check:

    • Does the source API have a delete signal (audit log, archived filter, events)?
    • If yes, is the sync emitting { type: "delete", key } markers?
    • If the delete signal is on a separate endpoint, is the flip-flop pattern used (alternate streams at cycle boundaries)?
    • If no delete signal exists, should this be a replace-mode sync instead?
  4. Hardcoded secrets: Are API keys, tokens, or credentials in the code instead of a brokered credential or process.env? Flag any string that looks like a secret.

  5. Missing error handling on fetch: Network calls without error handling will crash the sync on any transient failure. Consider whether the sync should catch and handle API errors or let them propagate (the runtime will retry the cycle).

Output Format

For each issue found:

  • What: Name the issue and point to the specific code location
  • Why it matters: What will happen in production if this isn't fixed
  • Fix: Provide a concrete code snippet showing the fix

If no issues are found, say so. Don't invent problems.

© makenotion, MIT. 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 .agents/skills/sync-validate of makenotion/workers-template.

Open the folder on GitHubat commit 681d89d

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in makenotion/workers-template, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Sync Capability Validator 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.

Sync Capability Validator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sync Capability Validator this skillmakenotion/workers-template4391 repos~1.2kAutomated safety check: NotesMIT
Backend Code Reviewlanggenius/dify158k—~676Automated safety check: PassCustom licence
Performance CheckZeroDeng01/sublinkPro1.7k—~1.8kAutomated safety check: PassMIT
Gerrit Permission Managertheneoai/awesome-skills184—~2.5kAutomated safety check: PassMIT
Frappe Code Reviewfrappe/skills146—~3.8kAutomated safety check: PassNone
Qodo PR Resolversbusso/claudeclaw194—~4kAutomated safety check: PassMIT

Similar skills

  • Backend Code Review

    langgenius/dify

    Reviews backend code under api/ for concrete, reproducible defects, routes to rule packs for architecture, schema, repositories and SQLAlchemy, and ranks findings from P0 to P3.

    158k GitHub stars~676 tokensUpdated today
    DevelopmentAuto-check passed
  • Performance Check

    ZeroDeng01/sublinkPro

    Checklist for reviewing code changes that touch queries, APIs, rendering, caching or algorithms for performance, scalability and resource-usage problems.

    1.7k GitHub stars~1.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Gerrit Permission Manager

    theneoai/awesome-skills

    Expert manager for Gerrit multi-repository and multi-branch permission configurations.

    184 GitHub stars~2.5k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed
  • Frappe Code Review

    frappe/skills

    Review code for any Frappe application — a checklist distilled from years of engineering practice on correctness, security, performance, concurrency, readability, API design, and testing.

    146 GitHub stars~3.8k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Qodo PR Resolver

    sbusso/claudeclaw

    Review and resolve PR issues with Qodo - get AI-powered code review issues and fix them interactively (GitHub, GitLab, Bitbucket, Azure DevOps)

    194 GitHub stars~4k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Wp Woocommerce Dev

    jorgerosal/wordpress-skills

    WooCommerce extension code review for HPOS compatibility, payment gateway security, cart optimization, and template overrides.

    101 GitHub stars~14k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed

More from makenotion/workers-template

  • Notion Worker Third-Party Auth Guide

    makenotion/workers-template

    Official

    Decides whether a Notion Worker should use a brokered credential, a plaintext environment secret, or OAuth to authenticate against a non-Notion service.

    439 GitHub starsUsed in 1 repo~3.5k tokens
    Auto-check: notes
  • Notion Worker Sync Scaffold

    makenotion/workers-template

    Official

    Walks you through designing a new sync for a Notion Worker, covering data source, mode, pagination and cursors, and then generates working code.

    439 GitHub starsUsed in 1 repo~4.6k tokens
    Auto-check: notes
  • Workers Sync Debugger

    makenotion/workers-template

    Official

    Works out why a Workers sync is failing or returning wrong data by reading run logs through the ntn CLI, matching errors to the sync code and proposing fixes.

    439 GitHub starsUsed in 1 repo~957 tokens
    Auto-check: notes
  • Notion Workers Sync Guide

    makenotion/workers-template

    Official

    Guides the design of Notion Workers syncs, from choosing a simple replace sync or a backfill plus delta pair to pagination, consistency buffers, pacing and deletion handling.

    439 GitHub starsUsed in 1 repo~3k tokens
    Auto-check passed

Questions about Sync Capability Validator

What does Sync Capability Validator do?

Checks a Workers sync capability against a list of common bugs, such as stuck cursors, endless pagination and lost deletions, and reports by severity. ts` and the modules it imports is run through a numbered checklist, and findings come back grouped by severity.md` for the underlying sync concepts, and its tools are limited to Read, Glob, Grep and Bash.

When should I use Sync Capability Validator?

Sync Capability Validator fits situations like: reviewing a new sync capability before it ships; debugging a sync that loops forever or re-fetches the same records; deciding how to add incremental updates to a sync that currently replaces everything.

How do I install Sync Capability Validator in Claude Code?

Run `npx skills add makenotion/workers-template --skill sync-validate -a claude-code`. Or copy the skill folder (.agents/skills/sync-validate in makenotion/workers-template) into .claude/skills/sync-validate in your project. Claude Code loads it when a task matches its description.

How do I install Sync Capability Validator in Codex?

Run `npx skills add makenotion/workers-template --skill sync-validate -a codex`. Or copy the skill folder (.agents/skills/sync-validate in makenotion/workers-template) into .agents/skills/sync-validate in your project. Codex loads it when a task matches its description.

Can I use Sync Capability Validator 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 makenotion/workers-template --skill sync-validate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sync-validate, .gemini/skills/sync-validate, .github/skills/sync-validate and .opencode/skills/sync-validate in your project.

What does Sync Capability Validator need to run?

SKILL.md names no scripts, command-line tools or credentials: Sync Capability Validator is instructions for the agent only. Our summary lists: A Workers project with syncs defined in src/index.ts. Its frontmatter pre-approves these tools: Read, Glob, Grep, Bash.

Does Sync Capability Validator access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Sync Capability Validator safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Sync Capability Validator use?

Sync Capability Validator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sync Capability Validator use?

About 1.2k tokens (SKILL.md is roughly 4.9k 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 Sync Capability Validator?

Skills that share tags, products or a category with Sync Capability Validator: Backend Code Review (langgenius/dify, 158k stars), Performance Check (ZeroDeng01/sublinkPro, 1.7k stars), Gerrit Permission Manager (theneoai/awesome-skills, 184 stars) and Frappe Code Review (frappe/skills, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sync Capability Validator?

makenotion (a GitHub organization, an official publisher) maintains it in makenotion/workers-template, which has 439 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on September 11, 2026.

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