Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>Docgrity — Doc Integrity for ReposNew to Visual Studio Code? Get it now.
Docgrity — Doc Integrity for Repos

Docgrity — Doc Integrity for Repos

Ujjavala

|
1 install
| (0) | Free
Finds contradictions, duplicates and open questions across your repository's markdown docs, and raises GitHub issues to get them fixed. Uses your own Copilot subscription — no keys, no servers.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Docgrity for VS Code

VS Code Marketplace CI

Find where your repository's docs disagree with themselves — and raise a GitHub issue to get it fixed.

Install: search “Docgrity” in the Extensions view, or code --install-extension ujjavala.docgrity

The repo-docs sibling of the Docgrity Confluence app. Scoped deliberately: markdown files only (**/*.md — READMEs, ADRs, runbooks, guides).

This repo contains all three repo-docs surfaces:

Surface Where Acts?
VS Code extension (this root) interactive scans in the editor raises issues, human-approved one at a time
GitHub Action (action/) CI: schedule + PRs opt-in deduped issues, job summary, HTML report
Local CLI (action/bin/docgrity.js) your terminal read-only report dashboard, no actions

See action/README.md for Action and CLI usage (uses: ujjavala/docgrity-vscode/action@main).

What it does

  1. Scan — Docgrity: Scan repository docs collects your markdown files, picks candidate pairs locally with TF-IDF (no network), then asks the LLM to assess:
    • Contradictions — conflicting factual claims across two docs
    • Duplicates — substantially overlapping docs that should be merged
    • Open questions — unresolved TBD/TODO/"who owns this?" buried in docs
  2. Review — findings appear in the Docgrity view with evidence excerpts; each excerpt is a click away from the exact spot in the file, and shows as a diagnostic squiggle. Every finding records the model + prompt version.
  3. Act — right-click a finding → Raise GitHub issue. Docgrity drafts the issue (title, evidence, suggested next step, potential owner from git history), shows you the draft, and only creates it after you approve. The issue is labelled docgrity and docgrity:<type>.

Zero cost, zero keys

  • All LLM calls go through your own GitHub Copilot subscription via the VS Code Language Model API. No API keys, no servers, no telemetry.
  • Issue creation uses VS Code's built-in GitHub sign-in.
  • Candidate selection is local TF-IDF — the LLM only sees the top pairs.

Modes: report-only vs report + issues

docgrity.mode Behaviour
report-and-issue (default) Scan, review findings, and raise GitHub issues — each previewed and human-approved.
report-only Scan and review only. The Raise GitHub issue action is hidden and blocked — the extension is guaranteed to never post anywhere. Good for client repos, compliance-sensitive environments, or just reading.

Set it in Settings → search “docgrity mode”, or in .vscode/settings.json:

{ "docgrity.mode": "report-only" }

Per-workspace settings win over user settings, so you can default to report-only globally and enable issues only in repos you own.

Choosing which checks run

Each check is a separate toggle — run any combination:

Setting Default What it does
docgrity.checks.duplicates true Pairwise duplicate detection
docgrity.checks.contradictions true Pairwise contradiction detection
docgrity.checks.openQuestions true Per-doc unresolved-question detection

These combine freely with any model (docgrity.model.*) and either mode (docgrity.mode). Disabling checks also speeds up scans: pair selection is skipped entirely when both pairwise checks are off.

Scan performance

  • When both pairwise checks are enabled they run as a single combined LLM call per pair (the model reads each pair once, not twice).
  • Docs with no open-question signals (no TODO/TBD/???/unanswered questions) are pre-filtered out before any LLM call.
  • Assessments run with bounded concurrency (4 at a time).
  • For large repos, tune docgrity.maxFiles, docgrity.maxPairs, and docgrity.include to narrow the corpus.

Choosing your model (Copilot, Claude, GPT, local llama…)

Run Docgrity: Select AI model from the command palette — it lists every model VS Code exposes and saves your choice. Or set it manually:

Setting Meaning Default
docgrity.model.vendor vscode.lm vendor id (copilot covers Copilot + BYOK models; empty = any) copilot
docgrity.model.family preferred model family, e.g. gpt-4o, claude-sonnet-4.5, llama3.1 (empty = first available) ""

Options, in order of simplicity:

  1. Copilot (default) — sign in to GitHub Copilot; nothing to configure. Copilot models come via the vscode.lm API and are unaffected by GitHub's retirement of the separate GitHub Models service.
  2. Claude / GPT / Gemini via Copilot — any model enabled in Copilot's model picker is available; set docgrity.model.family (e.g. claude-sonnet-4.5) or use Select AI model.
  3. Local Ollama — install Ollama, ollama pull llama3.1, then in Copilot Chat → Manage models → add the Ollama model. It registers under the copilot vendor; pick it with Select AI model. Fully local — no doc content leaves your machine.
  4. Remote Ollama over a Cloudflare Tunnel — if your model runs on another box (home server, GPU rig):
    # on the machine running Ollama
    cloudflared tunnel --url http://localhost:11434
    
    Point Copilot's Manage models → Ollama endpoint at the generated https://….trycloudflare.com URL. Note: quick tunnels get a new URL on every restart — re-update the endpoint each time, or create a named tunnel with your own domain for a stable URL (cloudflared tunnel create …). Protect a named tunnel with Cloudflare Access — an open LLM endpoint is abusable.

Small local models fail Docgrity's strict-JSON validation more often than hosted ones; failed responses are rejected safely (never mis-recorded) — expect fewer findings rather than wrong ones. 8B+ instruct models work best.

Outside the editor (the CLI and GitHub Action) Copilot is not available — there is no Copilot API for terminals or CI. Use ollama (keyless) or bring your own anthropic / openai / gemini key instead.

No-agent mode (no AI at all)

Set docgrity.engine to no-agent (CLI/Action: provider: none) to scan with pure algorithms — no model, no Copilot, no keys, fully offline:

  • Duplicates — verbatim shared-block detection + TF-IDF similarity (catches copy-paste duplication; paraphrased duplication needs AI).
  • Open questions — explicit markers (TODO, TBD, FIXME, ???, "open question"…) with deterministic high confidence.
  • Contradictions — ❌ require AI intelligence (semantic understanding of conflicting claims). They are skipped in no-agent mode — you're told, never given heuristic guesses.

Evidence stays verbatim, owners still come from git history, and raised issues use a deterministic template. Confidence is shown on every surface — Problems view squiggles, the findings tree, reports, CLI output, and issue bodies — so you can always judge how sure a finding is.

Design principles (shared with the Forge app)

  • Typed JSON outputs only — model responses are validated in code, never trusted prose.
  • Every finding requires verbatim evidence, verified against the source file (hallucinated quotes are dropped).
  • Ownership is always potential (last git author), never asserted.
  • Nothing is posted anywhere without explicit human approval.
  • Doc content is untrusted input — it cannot override agent instructions.

Requirements

  • VS Code 1.95+, an active GitHub Copilot subscription, a workspace with a GitHub origin remote (for issue creation).

Development

npm install
npm run compile
# F5 in VS Code to launch the Extension Development Host

Settings

Setting Default Purpose
docgrity.include **/*.md Docs glob (markdown only by design)
docgrity.exclude **/{node_modules,…}/** Excluded paths
docgrity.maxFiles / docgrity.maxPairs 200 / 25 Scan caps
docgrity.thresholds.* 0.75 / 0.7 / 0.6 Confidence gates per finding type
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft