npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

site-doctor

v0.6.0

Published

Audit rendered websites for broken links, images, accessibility, SEO, security headers, and more. CLI + MCP server for AI agents.

Readme

site-doctor

npm version License: MIT Node.js >=20

Audit rendered websites for broken links, images, accessibility violations, security header gaps, design issues, SEO metadata problems, console errors, hydration errors, and mixed content. Works with any URL — localhost, staging, or production.

MCP server included — use site-doctor directly from Claude, Cursor, Windsurf, or any MCP-compatible AI tool.

Interactive mode Terminal report HTML report

Install

npm install -g site-doctor

Or run without installing:

npx site-doctor audit --url http://localhost:3000

CLI Usage

Interactive mode

Run without --url to launch an interactive prompt:

site-doctor audit

You'll be guided through selecting a URL, checks, severity filters, and output format.

One-shot mode

site-doctor audit --url http://localhost:3000

Options

| Option | Description | Default | |--------|-------------|---------| | --url <url> | Base URL to audit. Omit to launch interactive mode. | — | | --max-pages <number> | Maximum pages to crawl. | 25 | | --report <terminal\|json\|html> | Output format. | terminal | | --output <path> | Write JSON or HTML report to a file. | — | | --open | Open HTML report in the browser. | true for HTML | | --no-open | Do not open HTML report in the browser. | — | | --open-files | Open source files with critical/high issues in your editor. | false | | --project-dir <path> | Path to project source for source-file links. | — | | --editor <vscode\|cursor\|webstorm> | Editor for source-file links. | vscode | | --only <checks> | Run only these checks (comma-separated). Mutually exclusive with --skip. | — | | --skip <checks> | Skip these checks (comma-separated). Mutually exclusive with --only. | — | | --severity <levels> | Filter issues by severity (comma-separated: critical,high,medium,low,info). | — | | --category <cats> | Filter issues by category (comma-separated: links,images,accessibility,security,console,hydration,metadata,mixed-content,design,performance). | — |

Check name aliases

--only and --skip accept both kebab-case and common aliases:

| Check | Aliases | |-------|---------| | links | links | | images | images | | accessibility | accessibility, a11y | | securityHeaders | security-headers, securityheaders | | consoleErrors | console-errors, consoleerrors | | hydrationErrors | hydration-errors, hydrationerrors | | metadata | metadata, seo | | mixedContent | mixed-content, mixedcontent | | designIssues | design-issues, designissues, design | | performance | performance, perf |

Examples

Interactive audit (prompts for URL, checks, severity, format):

site-doctor audit

Terminal report:

site-doctor audit --url http://localhost:3000 --max-pages 10

Run only design and accessibility checks:

site-doctor audit --url http://localhost:3000 --only design,a11y

Skip console and hydration checks, show only critical/high issues:

site-doctor audit --url http://localhost:3000 --skip console-errors,hydration-errors --severity critical,high

Filter by category and output as JSON:

site-doctor audit --url http://localhost:3000 --category design,security --report json --output report.json

HTML report (auto-opens browser):

site-doctor audit --url http://localhost:3000 --report html --project-dir ./apps/web

Open source files in VSCode for critical/high issues:

site-doctor audit --url http://localhost:3000 --report html --project-dir ./apps/web --open-files

List available checks

site-doctor list-checks

MCP Server

site-doctor ships a built-in Model Context Protocol server so AI agents can run audits without the CLI.

Tools

| Tool | Description | |------|-------------| | audit | Run a full audit. Parameters: url (required), maxPages (default 25), checks (toggle individual checks). Returns a markdown summary grouped by severity. | | list-checks | List all available audit checks with descriptions. Use this before running a full audit. |

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "site-doctor": {
      "command": "npx",
      "args": ["-y", "site-doctor-mcp"]
    }
  }
}

Cursor

Add to your Cursor MCP settings (.cursor/mcp.json in your project or global settings):

{
  "mcpServers": {
    "site-doctor": {
      "command": "npx",
      "args": ["-y", "site-doctor-mcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "site-doctor": {
      "command": "npx",
      "args": ["-y", "site-doctor-mcp"]
    }
  }
}

opencode

Add to opencode.json:

{
  "mcp": {
    "site-doctor": {
      "type": "local",
      "command": ["npx", "-y", "site-doctor-mcp"],
      "enabled": true
    }
  }
}

Global install

If installed globally, you can use the binary directly instead of npx:

{
  "mcpServers": {
    "site-doctor": {
      "command": "site-doctor-mcp"
    }
  }
}

Checks

| Check | Flag name | What it finds | |-------|-----------|---------------| | Crawl | — | Discovers same-origin pages, respects maxPages, skips downloads | | Links | links | Broken internal/external links, redirect loops, blocked URLs | | Images | images | Broken images, missing alt, missing dimensions, oversized files, lazy-loaded hero images | | Accessibility | accessibility (a11y) | axe-core WCAG violations — contrast, labels, landmarks, ARIA, heading order | | Security headers | security-headers | Missing CSP, HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, frame protection | | Console errors | console-errors | Grouped browser console errors with page context | | Hydration errors | hydration-errors | React / Next.js hydration mismatches | | Metadata | metadata (seo) | Missing title, description, canonical, Open Graph image, H1 issues | | Mixed content | mixed-content | HTTP resources loaded on HTTPS pages | | Design issues | design-issues (design) | Heading hierarchy, typography scale & readability, color contrast, touch targets, responsive layout, text walls | | Performance | performance (perf) | LCP, CLS, INP, render-blocking resources, JS/CSS bundle size, DOM size, compression, third-party hosts |

Source-file links

When you pass --project-dir, the HTML report links each page to its source file. Supports Next.js app/ and pages/ routers, including monorepos. Click the file link to open it in VS Code, Cursor, or WebStorm.

Programmatic API

You can also use site-doctor as a library:

import { runAudit, buildConfig } from "site-doctor";

const config = buildConfig({ url: "http://localhost:3000", maxPages: 10 });
const result = await runAudit(config);

console.log(`Found ${result.issues.length} issues`);
for (const issue of result.issues) {
  console.log(`[${issue.severity}] ${issue.category}: ${issue.message}`);
}

License

MIT