Agent skill

PR Verify

by docglow in docglow/docglow

Verify a Docglow change actually works before submitting or merging a PR.

MITAuto-check passedData & Analytics

Install PR Verify

skills CLI
$ npx skills add docglow/docglow --skill pr-verify -a claude-code

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

GitHub CLI
$ gh skill install docglow/docglow pr-verify --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/docglow/docglow.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pr-verify .claude/skills/pr-verify && 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
pr-verify
GitHub stars
148
Token cost
~1.5k tokens
SKILL.md length
631 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Verify a Docglow change actually works before submitting or merging a PR.

  • Works in 3 steps: Setup → Conformance → Behavioral verification
  • Self-reviewing a branch before opening a PR
  • SKILL.md covers Phase 0 — Setup, Phase 1 — Conformance, Phase 2 — Behavioral… and Reporting, plus 1 more section
  • Calls python, npm and git

What it does

PR Verify is an agent skill from docglow/docglow. Verify a Docglow change actually works before submitting or merging a PR. Runs the conformance suite, then a behavioral verification pass (flag matrix, artifact-join spot checks, pipeline contract sweep, payload budget). Use when reviewing a PR, self-reviewing a branch before opening a PR, or when asked to "verify this change" or "run pr-verify".

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.

It sits in Data & Analytics, covering Data pipelines and ETL. It works with dbt. The repository describes itself as: Modern documentation site generator for dbt Core — lineage explorer, health scoring, full-text search. Live demo: https://demo.docglow.com. The licence is MIT.

When your agent uses it

  • Self-reviewing a branch before opening a PR
  • Asked to verify this change

Example prompts

  • “verify this change”
  • “run pr-verify”
  • “/pr-verify”

Requirements

  • Python 3
  • Node.js

Workflow steps

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

  1. Setup
  2. Conformance
  3. Behavioral verification

What it can do on your machine

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

    • python
    • npm
    • git
    • ruff
    • mypy
    • npx
    • pip

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

  • Network

    No URLs in SKILL.md. Its commands use npm, git, npx and pip, 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

PR Verify loads about 1.5k tokens when it runs. Until then it costs about 90 tokens; SKILL.md has 631 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~90
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 docglow/docglow at commit dd1cfb9, republished under its MIT licence (© docglow). 631 words, ~1,488 tokens.

Download SKILL.mdSave it as .claude/skills/pr-verify/SKILL.md (or your agent's skills folder).
name
pr-verify
description
Verify a Docglow change actually works before submitting or merging a PR. Runs the conformance suite, then a behavioral verification pass (flag matrix, artifact-join spot checks, pipeline contract sweep, payload budget). Use when reviewing a PR, self-reviewing a branch before opening a PR, or when asked to "verify this change" or "run pr-verify".

PR verification for Docglow

Two phases, in order. Phase 1 proves the author's own tests pass. Phase 2 probes what those tests couldn't see — feature interactions and data semantics. Do not state a verdict ("mergeable", "looks good") until Phase 2 is complete. Green checks in Phase 1 are not evidence of correctness; both real blockers found in past reviews lived entirely in Phase 2.

Phase 0 — Setup

Work in a git worktree so the main checkout stays untouched:

bash
git worktree add /tmp/pr-verify-<branch> <branch>
cd /tmp/pr-verify-<branch>

Gotcha: an editable install (pip install -e) resolves docglow from wherever it was installed, not the worktree. Prefix Python commands with PYTHONPATH=$PWD/src or new modules will fail to import.

Phase 1 — Conformance

bash
PYTHONPATH=$PWD/src python -m pytest -q
ruff check src/ tests/
ruff format --check src/ tests/
mypy src/docglow
cd frontend && npm ci && npx tsc --noEmit && npm run test -- --run

If the PR touches src/docglow/static/ (the vendored frontend bundle), verify it is a faithful rebuild — the minified blob cannot be reviewed by eye:

bash
cd frontend && npm run build
diff -r dist/assets ../src/docglow/static/assets   # filenames AND content must match
diff dist/index.html ../src/docglow/static/index.html

A hash mismatch means the bundle was built from different source than the PR contains. Treat that as a blocker.

If the PR adds a top-level payload key, both exact-key assertions must be updated: tests/test_data_transformer.py and tests/test_dbt_versions.py.

Phase 2 — Behavioral verification

2a. Generation matrix

Generate real sites under every mode that could interact with the change, and inspect the emitted payload each time — exit codes prove nothing. Minimum matrix for generator-touching changes:

ModeWhat to check
plain --staticnew data present and correct
--select <one model> / --excludenew data respects filtering; no links to pages that were not generated
--slimnew payload key included/excluded deliberately, not by accident
artifacts missing run_results.jsonabsent data reads as "unknown/not run", never as passing
project with none of the relevant resourcesempty state, no crash
bash
PYTHONPATH=$PWD/src python -m docglow generate --project-dir examples/jaffle-shop --static --output-dir /tmp/site-plain
PYTHONPATH=$PWD/src python -m docglow generate --project-dir examples/jaffle-shop --static --select stg_customers --output-dir /tmp/site-select

Then read the embedded payload (grep the output index.html for the new key) and click through the generated site if the change is user-visible.

2b. Enumerate the enum

For any change that joins or maps dbt artifact data: list every category of input (each resource_type, each test_type, each materialization — whatever the relevant axis is) and hand-verify one instance of each category against the raw manifest.json / run_results.json / catalog.json. Bugs cluster in the outlier category — e.g. relationships tests order depends_on.nodes with the referenced model first, so naive [0] indexing picks the wrong resource; attached_node is the authoritative field. Aggregate counts can be correct while identities are wrong, so check identities, not counts.

Fixtures to cross-check against: tests/fixtures/, tests/fixtures/dbt-1.8/, tests/fixtures/dbt-1.9/, examples/jaffle-shop/target/.

Show full SKILL.md (249 more words)Show less
2c. Pipeline contract sweep

If the change adds or modifies a pipeline stage: open default_stages() in src/docglow/generator/pipeline.py and walk every existing stage, asking "does the new code respect what this stage established?" In particular:

  • filter_nodes — does the new stage honor --select/--exclude, or does it read ctx.artifacts.manifest raw and leak filtered-out resources back in?
  • build_search_index — should the new data be searchable?
  • ordering — does the new stage read anything produced by a later stage?
2d. Payload budget

Any new payload key gets measured, not guessed:

bash
python -c "import json,sys; d=json.load(open('payload.json')); print(len(json.dumps(d['<key>'])))"

Report bytes-per-item and project at 5,000 and 20,000 items. Publish and page load are size-sensitive; unbounded keys need a mitigation (omit null fields, drop verbose fields on happy-path items, paginate/virtualize rendering) or an explicit decision to defer.

2e. Compatibility

Payloads generated by older versions lack new keys, and older viewers may render newer payloads. New DocglowData keys are optional (readonly key?: T) in packages/shared-types/src/site.ts — follow the relationships? precedent. The frontend-local mirror/augmentation in frontend/src/types/index.ts must declare the same optionality, or the build breaks with TS2717 when shared-types is next republished. Frontend code guards against the key being absent.

Reporting

Tier every finding and attach a reproduction to each blocker:

  • Blocker — user-visible wrong behavior or broken contract; include the exact command and output that reproduces it
  • Should fix — will bite soon (compat breaks, unbounded growth, contradicted invariants)
  • Nit — convention, naming, style; never blocks a merge

Also report what was verified and how (commands run, sites generated, fixtures cross-checked), so the next reviewer knows what is already covered.

Cleanup

bash
git worktree remove --force /tmp/pr-verify-<branch>

© docglow, 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 .claude/skills/pr-verify of docglow/docglow.

Open the folder on GitHubat commit dd1cfb9

Compare with similar skills

PR Verify 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.

PR Verify compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
PR Verify this skilldocglow/docglow148—~1.5kAutomated safety check: PassMIT
Dbt Databricks PR Readydatabricks/dbt-databricks380—~2.8kAutomated safety check: PassApache-2.0
Mz Dbt ReleaseMaterializeInc/materialize6.4k—~1.2kAutomated safety check: PassCustom licence
Erd Studio Setupliam-machine/erd-studio165—~8.5kAutomated safety check: PassCustom licence
Migrating Dagster To Airflowastronomer/agents451—~3.8kAutomated safety check: PassApache-2.0
Dbt Parser Refreshyu-iskw/dbt-artifacts-parser118—~716Automated safety check: PassApache-2.0

Similar skills

  • Dbt Databricks PR Ready

    databricks/dbt-databricks

    Official

    A skill your agent uses for an open dbt-databricks pull request, including your own PR or a fork PR, to assess merge readiness and optionally repair selected gaps on the PR head branch.

    380 GitHub stars~2.8k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Mz Dbt Release

    MaterializeInc/materialize

    Cut a dbt-materialize PyPI release: bump the version in version.py and setup.py, date the Unreleased CHANGELOG entry, and open the release PR with a Ship: <url body.

    6.4k GitHub stars~1.2k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Erd Studio Setup

    liam-machine/erd-studio

    Friendly, step-by-step setup for ERD Studio in an existing dbt project, for people who may be new to dbt or data modelling.

    165 GitHub stars~8.5k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Guide for migrating Dagster projects to Apache Airflow 3 on Astro.

    451 GitHub stars~3.8k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Dbt Parser Refresh

    yu-iskw/dbt-artifacts-parser

    Refreshes dbt artifact schemas from dbt-labs/dbt-core and regenerates Pydantic parser classes.

    118 GitHub stars~716 tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Suggesting Dbt Bouncer Checks

    godatadriven/dbt-bouncer

    Analyzes a dbt project and suggests dbt-bouncer checks that already pass (for existing projects) or a sensible starter config (for greenfield projects).

    136 GitHub stars~1k tokensUpdated today
    Data & AnalyticsAuto-check passed

Works with

Questions about PR Verify

What does PR Verify do?

Verify a Docglow change actually works before submitting or merging a PR. PR Verify is an agent skill from docglow/docglow. Verify a Docglow change actually works before submitting or merging a PR.

When should I use PR Verify?

PR Verify fits situations like: self-reviewing a branch before opening a PR; asked to verify this change.

How do I install PR Verify in Claude Code?

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

How do I install PR Verify in Codex?

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

Can I use PR Verify 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 docglow/docglow --skill pr-verify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pr-verify, .gemini/skills/pr-verify, .github/skills/pr-verify and .opencode/skills/pr-verify in your project.

What does PR Verify need to run?

Going by SKILL.md and its folder, PR Verify needs the command-line tools its instructions call (python, npm, git, ruff, mypy and npx). Our summary lists: Python 3; Node.js.

Does PR Verify access the network?

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

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

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

About 1.5k tokens (SKILL.md is roughly 6k 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 PR Verify?

Skills that share tags, products or a category with PR Verify: Dbt Databricks PR Ready (databricks/dbt-databricks, 380 stars), Mz Dbt Release (MaterializeInc/materialize, 6.4k stars), Erd Studio Setup (liam-machine/erd-studio, 165 stars) and Migrating Dagster To Airflow (astronomer/agents, 451 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains PR Verify?

docglow (a GitHub organization) maintains it in docglow/docglow, which has 148 GitHub stars. The repository was last updated on September 26, 2026.

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