Agent skill

Refresh Source

by dlt-hub in dlt-hub/verified-sources

Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests.

Apache-2.0Auto-check passedTesting & QA

Install Refresh Source

skills CLI
$ npx skills add dlt-hub/verified-sources --skill refresh-source -a claude-code

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

GitHub CLI
$ gh skill install dlt-hub/verified-sources refresh-source --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/dlt-hub/verified-sources.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/refresh-source .claude/skills/refresh-source && 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
refresh-source
GitHub stars
124
Token cost
~1.7k tokens
SKILL.md length
875 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests.

  • Works in 7 steps: Ground truth → Research the upstream (web search,… → Reproduce empirically. Never claim a… → …
  • Users report a source is outdated
  • SKILL.md covers Phase 0 — Ground truth, Phase 1 — Research the…, Phase 2 — Reproduce… and Phase 3 — Plan (present before…, plus 3 more sections
  • Calls uv, gh and pytest

What it does

Refresh Source is an agent skill from dlt-hub/verified-sources. Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests. Use when users report a source is outdated or broken, or for periodic source maintenance.

Its SKILL.md is about 1.7k 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 Testing & QA, covering Unit testing. It works with Python. The repository describes itself as: Contribute to dlt verified sources 🔥. The licence is Apache-2.0.

When your agent uses it

  • Users report a source is outdated
  • For periodic source maintenance

Example prompts

  • “/refresh-source”

Requirements

  • Python 3

Workflow steps

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

  1. Ground truth
  2. Research the upstream (web search, authoritative sources only)
  3. Reproduce empirically. Never claim a breakage you haven't run.
  4. Plan (present before implementing)
  5. Tests (the biggest pain point)
  6. Verify and finish
  7. Assess the public dlt docs

What it can do on your machine

Read from SKILL.md and the folder at commit 3957506. 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:

    • uv
    • gh
    • pytest
    • make
    • git

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

  • Network

    Links to these hosts (documentation or services it may open):

    • dlthub.com

    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

Refresh Source loads about 1.7k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 875 words of instructions outside code blocks.

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

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 dlt-hub/verified-sources at commit 3957506, republished under its Apache-2.0 licence (© dlt-hub). 875 words, ~1,747 tokens.

Download SKILL.mdSave it as .claude/skills/refresh-source/SKILL.md (or your agent's skills folder).
name
refresh-source
description
Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests. Use when users report a source is outdated or broken, or for periodic source maintenance.
argument-hint
<source-name> -- [optional hints what to pay attention to]

Refresh a verified source

Arguments: $ARGUMENTS — first token is the source folder name under sources/, anything after -- is user hints (specific user reports, suspected areas).

Work through the phases in order. Do not skip phase 0 — wrong conclusions are usually formed by analyzing code that is no longer alive or pins that no longer reflect reality.

Phase 0 — Ground truth

  1. Read everything in sources/<name>/, sources/<name>_pipeline.py, tests/<name>/.
  2. git log --oneline -- sources/<name> — look for past removals/refactors. Hunt dead code: files, fixtures, conftest helpers, docstrings and README claims orphaned by earlier PRs. Dead code should be deleted, never "fixed". Dead code may also be the only reason for a heavy dependency — deleting it can drop whole packages from requirements.txt.
  3. Compare the THREE dependency declarations and flag mismatches:
    • sources/<name>/requirements.txt — what dlt init users actually install (often unbounded!)
    • pyproject.toml dependency group <name> — what CI tests
    • any version pinned in code (e.g. api_version = "...") A CI group pinned years behind an unbounded requirements.txt means CI is testing a different client than users get — that is how breakage ships silently.
  4. Check open/closed GitHub issues for the source (gh search issues) and any user hints from the arguments.

Phase 1 — Research the upstream (web search, authoritative sources only)

Use WebSearch/WebFetch against official docs, SDK changelogs, and SDK migration guides (vendor docs site, vendor GitHub wiki/CHANGELOG). For each finding record the source URL.

  • Current SDK major version and every breaking change between the version CI pins and today (migration guides are gold: object model changes, removed dict-inheritance, auth patterns, deprecated module-level clients).
  • Current API version / versioning model; what the code pins vs. what is current; breaking changes in between (renamed/removed/restructured fields the source or its helpers depend on).
  • Official request/response shapes the code touches: list envelopes, pagination cursors, filter parameter formats, retention limits (e.g. event retention windows). Capture documented example payloads — they become test fixtures in phase 4.

Phase 2 — Reproduce empirically. Never claim a breakage you haven't run.

Use ephemeral environments to prove each suspected breakage and each proposed fix, at both ends of the allowed dependency range:

sh
cd /tmp && uv run --with "<sdk>==<oldest-allowed>" python - <<'EOF' ... EOF
cd /tmp && uv run --with "<sdk>==<newest>" python - <<'EOF' ... EOF

Construct real SDK objects (e.g. construct_from-style factories) and exercise the exact code path that is suspected broken. Subtle version differences matter (e.g. a conversion helper being shallow in one major and recursive in another) — only execution reveals them.

Phase 3 — Plan (present before implementing)

Tier the findings; keep tiers separable:

  • P0 — unbreak: minimal fixes that work across the whole supported dependency range; align CI group with what fresh users install; fix requirements bounds (add upper bound to majors not yet verified). Must NOT change loaded table schemas.
  • P1 — modernize client: new SDK client patterns, drop global state, configurable API version. Anything that changes response shapes changes loaded schemas for existing users — call this out explicitly as breaking and keep it out of P0.
  • P2 — features: new endpoints, incremental improvements.

Prefer dlt built-ins over hand-rolled code (dlt.common.time.ensure_pendulum_datetime, dlt.common logger, rest_api helpers) — but verify the utility exists in the oldest dlt allowed by the source's requirements.txt before using it.

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

Phase 4 — Tests (the biggest pain point)

Existing source tests are usually credential-gated integration tests that never run for contributors. Always add credential-free unit tests:

  • New tests/<name>/test_helpers.py (module-based def test_*() -> None, parametrize with readable ids — see .claude/rules/testing.md).
  • Use proven shapes, not invented ones: fixtures must mirror request/response shapes, pagination envelopes and cursor semantics found in official docs during phase 1 (cite which doc page a fixture mirrors when it isn't obvious).
  • Mock at the transport/SDK boundary with real SDK objects (construct_from etc.), monkeypatching the API call — so the installed SDK's serialization actually runs instead of a MagicMock lying about it.
  • Cover: pagination control flow (cursor passed from last item, stop on terminal page flag), parameter construction (filters, special-cased endpoints), and any date/type conversion helpers with one case per accepted input type.
  • Run the unit tests against both ends of the SDK range (phase 2 envs) before declaring the range supported.

Phase 5 — Verify and finish

  1. uv lock if pyproject changed; ensure resolution works on all supported Python versions.
  2. pytest tests/<name>/test_helpers.py — must pass without anything in sources/.dlt.
  3. Integration tests pytest tests/<name> only if credentials exist; otherwise state plainly they were not run.
  4. make lint-code and make format-lint.
  5. Update stale docstrings/README touched by the changes. Report findings with file:line references and the doc URLs that back each claim.

Phase 6 — Assess the public dlt docs

The user-facing docs live in the separate public dlt-hub/dlt repo at docs/website/docs/dlt-ecosystem/verified-sources/<name>.md and are also served to LLMs via https://dlthub.com/docs/llms.txt — one fix covers both. Fetch the file (gh api repos/dlt-hub/dlt/contents/docs/...) and review it against the refreshed source:

  • Code drift: constant names, default endpoint tuples, function signatures and links quoted in the docs must match settings.py/__init__.py exactly — docs commonly lag source-repo PRs (e.g. an endpoint moved between ENDPOINTS tuples).
  • Copy-pasteable examples are the highest-stakes content: an example demonstrating a removed or unsafe pattern (e.g. incremental loading of an editable endpoint) silently produces wrong data for everyone who pastes it.
  • Document what the refresh established: supported SDK version range, pinned upstream API version and its schema implications, accepted input formats, retention limits and other upstream constraints discovered in phase 1.
  • Propose the changes as a diff against the fetched file; the actual PR goes to dlt-hub/dlt, not this repo.

© dlt-hub, 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 .claude/skills/refresh-source of dlt-hub/verified-sources.

Open the folder on GitHubat commit 3957506

Compare with similar skills

Refresh Source 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.

Refresh Source compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Refresh Source this skilldlt-hub/verified-sources124—~1.7kAutomated safety check: PassApache-2.0
Simple Modern Uvjlevy/simple-modern-uv301—~1.9kAutomated safety check: PassMIT
JS-in-HTML Testingliaohch3/claude-tap3.3k—~924Automated safety check: PassMIT
Python Guidelightly-ai/lightly-studio896—~3kAutomated safety check: PassApache-2.0
Zizkadb TestZIZKA-AI-SL/ZizkaDB123—~358Automated safety check: PassCustom licence
Python Helpershepherdjerred/monorepo112—~2.3kAutomated safety check: PassGPL-3.0

Similar skills

  • Simple Modern Uv

    jlevy/simple-modern-uv

    Start, selectively modernize, fully migrate, or update Python projects using simple-modern-uv practices: uv, ruff, BasedPyright, pytest, GitHub Actions CI, and tag-driven PyPI publishing.

    301 GitHub stars~1.9k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • JS-in-HTML Testing

    liaohch3/claude-tap

    Tests JavaScript embedded in an HTML file in two layers: pytest checks of the logic ported to Python, and Playwright runs in a real browser for the DOM.

    3.3k GitHub stars~924 tokensUpdated 15 days ago
    Testing & QAAuto-check passed
  • Python Guide

    lightly-ai/lightly-studio

    Read before writing or reviewing any Python code in this repository.

    896 GitHub stars~3k tokensUpdated today
    Testing & QAAuto-check passed
  • Zizkadb Test

    ZIZKA-AI-SL/ZizkaDB

    Run the full ZizkaDB test suite across all layers — lint, Python unit tests, SDK tests, MCP tests, TypeScript tests, and dashboard build verification.

    123 GitHub stars~358 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Python Helper

    shepherdjerred/monorepo

    Current Python development guidance for versions, uv and pip, packaging, typing, asyncio, pytest, Ruff, security, and runtime boundaries.

    112 GitHub stars~2.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Adk Verify Snippets

    google/adk-python

    Official

    Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail…

    22k GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed

More from dlt-hub/verified-sources

  • Contributing

    dlt-hub/verified-sources

    Guide for contributing to the verified-sources repository. An agent skill from dlt-hub/verified-sources.

    124 GitHub stars~442 tokensUpdated 3 mo ago
    Auto-check passed

Works with

Questions about Refresh Source

What does Refresh Source do?

Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests. Refresh Source is an agent skill from dlt-hub/verified-sources. Audit a verified source against the current state of its upstream API/SDK, find breakages and outdated patterns, and propose (or implement) a fix plan with credential-free unit tests.

When should I use Refresh Source?

Refresh Source fits situations like: users report a source is outdated; for periodic source maintenance.

How do I install Refresh Source in Claude Code?

Run `npx skills add dlt-hub/verified-sources --skill refresh-source -a claude-code`. Or copy the skill folder (.claude/skills/refresh-source in dlt-hub/verified-sources) into .claude/skills/refresh-source in your project. Claude Code loads it when a task matches its description.

How do I install Refresh Source in Codex?

Run `npx skills add dlt-hub/verified-sources --skill refresh-source -a codex`. Or copy the skill folder (.claude/skills/refresh-source in dlt-hub/verified-sources) into .agents/skills/refresh-source in your project. Codex loads it when a task matches its description.

Can I use Refresh Source 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 dlt-hub/verified-sources --skill refresh-source -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/refresh-source, .gemini/skills/refresh-source, .github/skills/refresh-source and .opencode/skills/refresh-source in your project.

What does Refresh Source need to run?

Going by SKILL.md and its folder, Refresh Source needs the command-line tools its instructions call (uv, gh, pytest, make and git). Our summary lists: Python 3.

Does Refresh Source access the network?

SKILL.md names 1 domain. As links in the text: dlthub.com. This is read from the text; nothing was executed.

Is Refresh Source 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 Refresh Source use?

Refresh Source is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Refresh Source use?

About 1.7k tokens (SKILL.md is roughly 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 Refresh Source?

Skills that share tags, products or a category with Refresh Source: Simple Modern Uv (jlevy/simple-modern-uv, 301 stars), JS-in-HTML Testing (liaohch3/claude-tap, 3.3k stars), Python Guide (lightly-ai/lightly-studio, 896 stars) and Zizkadb Test (ZIZKA-AI-SL/ZizkaDB, 123 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Refresh Source?

dlt-hub (a GitHub organization) maintains it in dlt-hub/verified-sources, which has 124 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on July 3, 2026.

Source: dlt-hub/verified-sources on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.