Skip to main content

pr-coverage-check

Compare a docs PR against the engineering PR (and Jira) it documents, and produce a short list of pointers — not a full report — telling an engineering reviewer exactly where to look and why, to speed up tech review. Human supplies the PR and ticket URLs; the skill never guesses linkage. Use when a writer wants to check whether a docs PR adequately covers an engineering change before requesting eng review. Trigger phrases: "check PR coverage", "tech review coverage", "does my docs PR cover the eng PR", "coverage summary for review".

Datos de origen

Repositorio
mongodb/docs
Última actividad en el origen
17 de septiembre de 2026 a las 22:55
Idioma detectado de SKILL.md
inglés
Estrellas
777
Forks
1699

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Explorador de archivos
2 archivos

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
pr-coverage-check
internal
true
description
Compare a docs PR against the engineering PR (and Jira) it documents, and produce a short list of pointers — not a full report — telling an engineering reviewer exactly where to look and why, to speed up tech review. Human supplies the PR and ticket URLs; the skill never guesses linkage. Use when a writer wants to check whether a docs PR adequately covers an engineering change before requesting eng review. Trigger phrases: "check PR coverage", "tech review coverage", "does my docs PR cover the eng PR", "coverage summary for review".
# pr-coverage-check **Status: experimental first slice.** This skill exists to test one hard question — *can the model make a trustworthy judgment about whether a docs PR covers an engineering change?* It is pure judgment work: no scripts, no manifest, human-in-the-loop. Expect to iterate heavily. Do not treat its output as authoritative; treat it as a draft that a human confirms. ## What this is (and is not) This is a **PR-vs-PR comparison for tech review**, not drift detection. It answers "does *this* docs PR cover *this* engineering change?" — a bounded, point-in-time question — not "are the published docs still true?" (that is the `docs-drift` skill). It **never** discovers the engineering PR on its own (see commitment 1 below). It **never** edits docs or files tickets. It produces a report in the conversation for the writer to read and correct, and — only with explicit per-run confirmation — can append that report to the docs PR description (see Stage 7). ## Design commitments (hold these firm) 1. **Human supplies linkage.** Always ask for the URLs. Never guess the counterpart by parsing a PR body or Jira. 2. **Evidence over scores.** No bare confidence percentage. Every item must be checkable against a specific diff line. 3. **Precision over recall.** A short high-confidence list beats a long list of maybes — see the inclusion test below for what qualifies. 4. **The reviewer already has the diff open.** Never restate what the docs PR says or list what's fine. State only where to look and why. 5. **Stay inside coverage; do not do the reviewer's job for them.** This skill maps eng change → docs change; it does not adjudicate whether the docs' technical description is *correct* (see Known limitations — this is also where the skill has been shown unreliable). Point at what to check; do not assert a verdict. 6. **The inclusion test.** Before including any item, ask: *does resolving this require engineering knowledge the writer structurally lacks?* If the writer could resolve it by re-reading their own draft, it does not belong — that's an editorial call, not this skill's job. Only items that clear this test earn a `Gap`, `Verify`, or `Confirm` tag (defined in Stage 4). ## Inputs Ask for all of these **in a single message**, not sequential Q&A: - **Docs PR URL** (the in-progress writer PR). - **Engineering PR URL(s)**, if any exist. - **Jira ticket(s)** — docs and/or engineering, if they exist. - Optional: **one sentence** from the writer on what the change is. If the writer's first message already contains some of these, only ask for what's missing. Whether an eng PR exists is not the signal for whether this skill applies — see the four modes below. ## Procedure ### 1. Gather and determine mode Fetch the docs PR diff and any Jira tickets. Use `gh pr diff <url>` for PRs and the `/jira` skill for tickets. If any supplied link is inaccessible, stop and tell the writer which one — do not proceed on a guess. Then determine which mode applies: - **Mode A — eng PR + eng Jira supplied.** The ideal case. Fetch the eng PR diff too and proceed to Stage 2 as written. - **Mode B — no eng PR, but Jira/release notes describe the change** (e.g. a version bump where the eng work happened upstream). Use Jira and release notes as the "what changed" source in place of a diff, and lower confidence accordingly — you are reading a description, not code. - **Mode C — no eng PR, no eng Jira, and the docs diff makes no verifiable technical claims** (pure restructuring, reformatting, following another page as a template). This skill does not apply. **Stop here — skip Stages 2–4.** Say so plainly and suggest a manual check against the ticket's instructions instead of forcing an analysis with nothing to compare against. - **Mode D — no eng PR, no eng Jira, but the docs diff changes or adds claims about product behavior** (e.g. a proactive quality-fix ticket that corrects or clarifies how something works). This still needs tech review — the absence of an eng PR here means nothing changed in the product, not that nothing needs verifying. Treat the **current product source** as the reference, the same way `docs-drift` does, but scoped only to the specific claims that changed in this docs PR — not a full-page audit. Read the relevant source (e.g. the driver method(s) being described) directly rather than inferring from the ticket alone. State which mode you're in at the top of the report — the reviewer should know whether "coverage" or "accuracy against current source" is what's being checked. ### 2. Synthesize the reference to check against **Modes A/B** — From the engineering PR diff + Jira, list the **public-contract changes** a user would need documented: new/changed flags, options, defaults, enum values, constraints, API shapes, behavioral changes, version metadata. **Downweight mechanical churn** — file moves, renames, refactors, test-only changes, formatting. These rarely need docs. Upweight anything that changes what a user can do or must know. **Watch for collateral changes** — in a dependency- or version-bump PR, changes made only to keep the code building against the new version (not because the reference change itself calls for them) are a third bucket, distinct from both public-contract changes and mechanical churn. Do not downweight these as churn: a collateral change is often the riskiest part of the PR precisely because it maps to nothing in the reference, so nothing forces a reviewer to look at it. Keep it in scope. Be honest about inference limits: a config flag is easy to read off a diff; a behavioral change buried in logic may not be. Where you are inferring rather than reading a clear signal, mark the unit as **inferred** so its coverage verdict inherits that uncertainty. **Mode D** — There is no diff to read. Instead, list the specific behavioral claims the docs PR changed or added (e.g. "how `Next()`, `TryNext()`, and tailable cursors relate"), then read the actual product source for each one directly. The reference here is *current source behavior*, not a delta — do not skip reading the source just because nothing "changed" in engineering's world. ### 3. Synthesize "what the docs PR changed" From the docs PR diff, list what the writer added or changed, by section. This is the subject of the report — the reviewer is reading *this* PR, not the eng PR (Modes A/B) or the source (Mode D). That context is background, not the headline. **If the docs PR adds or changes code examples**, check whether matching Grove tests exist and pass (e.g. new/changed files under `code-example-tests/<language>/.../tests/`). This is mechanical, not a judgment call — surface it as a one-line testing status in the report so the reviewer knows whether the examples are CI-verified or need manual checking. ### 4. Map and classify Map each docs change to the eng change unit(s) it addresses. Most of this mapping is invisible in the output — it either checks out (say nothing, it folds into the confidence line) or it clears the inclusion test above and earns exactly one tag: - **Gap** — a fact only visible in the eng diff (not the ticket, not inferable from the docs alone) that the docs do not mention at all. Purely about presence/absence; state it, do not ask permission — the reviewer decides whether it matters. Example: a diff adds a deprecation warning the docs never reference. Once something clears the inclusion test as a Gap, keep it as a `[Gap]` line rather than softening it into a "no action expected" or "not a concern" note — whether it matters is the reviewer's call, per design commitment 5. - **Verify** — the docs make a specific claim about behavior you're not fully certain is accurate. Point at the claim and cite the specific thing you read that it turns on: a diff line, a line in a file you opened, or a passage in release notes/docs. General recollection of how a framework or library usually behaves is weaker evidence than something read for this PR — if that's the only basis for an item, say so in the item itself rather than stating it with the same confidence as a claim you confirmed by reading code. Where confirming a claim depends on knowing what else relies on the changed code, read that dependency directly rather than inferring it from the diff alone. See Known limitations for why this skill's own accuracy judgments still need a human check regardless. - **Confirm** — a completeness question only engineering can answer (e.g. "is this capability actually finished/user-facing this release?") — not a writer's own editorial call about whether to explain more. If nothing clears the inclusion test, say so plainly — an empty gap/verify/ confirm list is a valid, useful result, not a failure to find something. ### 5. Report Output is a pointer list, not a report — orient, then point. See [references/report-template.md](references/report-template.md) for the exact format, the confidence rubric, a worked example, and output constraints. ### 6. Confirm with the writer After the pointer list, ask the writer to resolve each **[Confirm]** item. Present three explicit options, not just confirm-or-correct: **confirm** it as written, **correct** it, or **ignore** it (drop it from the report entirely because the writer has determined it doesn't need eng input, e.g. a version bump they already know is intentional). If the writer ignores an item, remove it from the report before Stage 7; do not carry dismissed items into the published version. Their answers are the iteration signal for this skill; note recurring correction or ignore patterns so the flow can be sharpened over time. **Do not ask the writer to resolve `Verify` items.** Those are for the *engineering reviewer* during tech review; routing them back to the writer first risks a pre-biased answer (design commitment 5). ### 7. Offer to publish After the writer has responded to the `[Confirm]` items, always ask a yes/no question: *"Want me to append this report to the docs PR description so the engineering reviewer sees it?"* Do not publish without an explicit yes on that run — this is a shared, visible artifact, so confirmation is required every time, not just once per PR. If the writer says yes: 1. Fetch the current PR description with `gh pr view <url> --json body -q .body`. 2. Search it for the marker `<!-- pr-coverage-check:report -->`. The markers must bracket the *entire* report block, including the `## Tech Reviewer Suggestions` heading line, not just the body below it, so the replace step in a rerun can't drift and leave a duplicate heading behind: ``` <!-- pr-coverage-check:report --> ## Tech Reviewer Suggestions ...full report body... <!-- /pr-coverage-check:report --> ``` - **Marker found:** replace everything from the opening marker to the closing marker, inclusive, with the new markers + report. This is what makes reruns safe — a second publish on the same PR updates the existing report in place instead of stacking a duplicate below it. - **No marker:** append the marker-wrapped report to the end of the existing description. 3. Write the result back with `gh pr edit <url> --body-file <tmp-file>` (use a temp file, not `--body`, so formatting/newlines survive shell-quoting). 4. Confirm to the writer that the description was updated and share the PR URL. If the writer says no, stop here — the report already exists in the conversation, which satisfies this skill's job. ## Known limitations (state these to the writer) - Strongest on surface API/config/flag/enum changes; weakest on behavioral changes buried in logic — which are also the ones docs most often miss. - Depends on Jira/PR quality. Thin tickets and terse diffs yield lower confidence, and the report says so rather than inventing certainty. - No confidence *number* by design in this slice — only low/med/high with a stated reason. - **This skill's own accuracy judgments are not reliably reproducible** — see the Verify tag repro case in Stage 4. - **Default Jira fetches only see a fixed field set** (summary, description, status, assignee, reporter, labels, dates) — custom URL-type fields are not visible via a plain fetch. Ask the writer to paste any such link explicitly.
Ver en GitHub