docsParity
Code vs docs, diffed by Claude

Your docs drifted from your code. docsParity finds where.

Paste a GitHub repo and a docs URL. It reads the exported API surface, crawls the docs, and shows you exactly where they disagree. Sorted by severity, each finding comes with the fix.

Supports:TypeScriptJavaScriptPythonRustGoJava
Or try:

Why docs drift is expensive

A developer follows the docs, hits an error, and spends two hours debugging. The method signature changed six weeks ago. Nobody updated the docs. docsParity catches this in 30 seconds, before it costs anyone an afternoon.

30s
From two URLs to a ranked report
/10
A deterministic, shareable drift score
1-click
File the fix as a GitHub issue

How it works

Four stages. Each one is deterministic and inspectable.

1

Fetch the source files

Reads the repo file tree from GitHub and picks the most API-relevant files. Not the whole codebase, just what matters.

  • Scores every file: entry points from package.json exports get +100, api/index/sdk filenames get +25, depth is penalized
  • Fetches the top 12 files from raw.githubusercontent.com, which has a separate rate limit from the REST API
  • Reads package.json exports to find declared entry points for TS/JS repos
2

Extract the API surface

Parses source files into a structured list of exported symbols: names, signatures, doc comments, and deprecated flags.

  • TypeScript/JavaScript uses the TypeScript compiler API for real AST parsing. Handles re-exports, generics, and overloads.
  • Python, Rust, Go, and Java each have a dedicated extractor tuned to that language's public API conventions
  • Every symbol carries: name, kind, signature, file path, line number, and a deprecated flag
3

Crawl the docs

Firecrawl converts the docs site to clean Markdown, stripping nav and sidebars so Claude reads only what developers read.

  • Handles SPAs, JS-rendered content, and multi-page doc sites automatically
  • Strips navigation, sidebars, and boilerplate so the signal-to-noise ratio is high
  • Returns page titles and Markdown content with code blocks and headings preserved
4

Diff and score

Claude compares the API surface to the docs and flags every mismatch. A deterministic formula scores them. No model-guessed numbers.

  • Structured outputs (JSON Schema) enforce the response shape. No prompt engineering needed, no parse failures.
  • Prompt caching on the code and docs blocks: a re-run within 5 minutes hits cache and cuts roughly 80% of the token cost
  • Drift score = sum of (severity weight x confidence factor), capped at 10. High: 3 pts, medium: 1.5, low: 0.6

Supported languages

Each language has a dedicated extractor tuned to its public API conventions.

TypeScript / JavaScript
Parser
TypeScript compiler API
Extracts
Exported functions, classes, interfaces, enums, type aliases, const exports, re-exports
Note
Real AST parsing; handles .d.ts declarations and complex re-export chains
Python
Parser
Regex + bracket-balancing collector
Extracts
Top-level def, class, @property, __init__; collects docstrings and type annotations
Note
Detects # deprecated comments and the .. deprecated:: Sphinx directive
Rust
Parser
pub-item scanner
Extracts
pub fn, pub struct, pub trait, pub enum, pub type, pub const at crate root level
Note
Detects the #[deprecated] attribute and collects /// doc comments
Go
Parser
Export scanner
Extracts
Uppercase-named func, type, struct, interface, const; skips internal/ and cmd/
Note
Detects the // Deprecated: godoc convention; boosts api/, client/, types.go files
Java
Parser
Public-member scanner
Extracts
public class, interface, enum, record; public methods; public static final constants
Note
Detects @Deprecated; collects Javadoc; handles generics and inline annotations

More languages planned. Each extractor is around 100 lines and the pattern is designed to extend.

What every report gives you

  • Side-by-side mismatches

    The exact code snippet next to the conflicting docs text. You see the drift in one glance.

  • A drift score out of 10

    Computed from severity-weighted findings, not a number Claude guessed. Same repo always scores the same.

  • Coverage score

    The percentage of exported symbols that appear in the docs. A quick read on how discoverable your API is.

  • Deprecated API detection

    Symbols marked deprecated in code but not flagged in docs show up as high-severity mismatches automatically.

  • A suggested fix per finding

    Corrected docs text you can paste straight in or copy with one click.

  • A shareable permalink

    Every run gets its own URL and Open Graph card. Post your score.

  • File as a GitHub issue

    One click opens a pre-filled issue on the repo, documentation label included.

  • Full transparency

    See which files were read, how many symbols were extracted, which doc pages were crawled, and which model ran.

Common questions

Practical things to know before you run it.

What repos work best?

Public GitHub repos with a dedicated docs site. SDKs, libraries, and frameworks are ideal. A README-only project gives thinner results. Private repos are not supported.

How long does it take?

Usually 30 to 90 seconds. GitHub fetching and Firecrawl crawling each take 10 to 20 seconds. Claude varies with repo size. A step-by-step progress bar keeps you oriented throughout.

Is the drift score reproducible?

Yes. The formula is sum(weight x confidence), capped at 10: high findings score 3, medium 1.5, low 0.6. The same inputs always produce the same score. Claude never picks the number.

Does re-analyzing the same repo cost more?

Much less. The API surface and docs blocks are sent with cache_control: ephemeral. A re-run within 5 minutes hits the cache and cuts roughly 80% of the token cost.

What if my language is not listed?

TS/JS, Python, Rust, Go, and Java are fully supported. Other languages still run but fall back to the TS/JS extractor, which may miss symbols. Each extractor is around 100 lines and the pattern is designed to extend.

How do I share or re-use a report?

Every completed report gets a permanent URL at /report/{id}. The Dashboard lists all past runs. The re-analyze button re-runs with the same URLs pre-filled.