Pkgverdict

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.1Updated Oct 30, 2026

Pre-install verdicts for npm packages: GO, RISKY, FAKE, or MISSING. Built for humans and AI agents.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Checks npm packages before installation and returns a GO, RISKY, FAKE or MISSING verdict, so an assistant can vet dependencies before adding them.

What you can do
  • Check a single npm package by name or name@version and get a plain-language verdict with the signals behind it
  • Scan a project's package.json and list dependency verdicts worst first, optionally skipping dev dependencies
  • Flag hallucinated or misspelled names, lookalike names, young or obscure packages, install scripts, deprecation, missing repo or license, and OSV advisories
  • Return machine-readable JSON output and exit codes suitable for scripting or CI gates
When to use it
Use it when an AI coding agent suggests a package to install, or when you want a pre-install safety check on new or unfamiliar npm dependencies and a CI gate that fails on suspicious packages.
Requirements
Runs as a local stdio process via Docker; the image is pulled from GHCR and there is no npm package, so npx will not work. Network access to the npm registry and the OSV database is needed. No accounts, API keys or environment variables are declared. Mounting the project directory is needed for the scan command.
Before you install
The scan command reads a project's package.json, so mount only the directory you intend to check. Verdicts are advisory heuristics from registry metadata, download counts and OSV advisories, not a guarantee; RISKY packages may still be fine and should be reviewed. Results are cached under a local cache directory for up to six hours, so stale verdicts are possible until it is cleared.

Installation

In SourceWeft

  1. Open Pkgverdict in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

pkgverdict

Check an npm package before you install it. One command, one verdict: GO, RISKY, FAKE, or MISSING — in plain words your AI coding agent can read too.

pkgverdict ships as a container image on GHCR (there is no npm package named pkgverdict, so npx pkgverdict will 404 — use Docker):

bash
docker run --rm ghcr.io/cloudcorprecords/pkgverdict check react-markdown# [GO] [email protected]#   - 5y old, 38.4M/wk, no install scripts, no advisories, no lookalike name.
docker run --rm ghcr.io/cloudcorprecords/pkgverdict check unused-imports# [FAKE] [email protected]#   - Flagged malicious: MAL-2025-48781. Do not install.#   - Name rides on eslint-plugin-unused-imports (suffix of popular name) and the#     package is barely downloaded — the classic typosquat shape.
docker run --rm ghcr.io/cloudcorprecords/pkgverdict check react-super-hooks-plus# [MISSING] react-super-hooks-plus#   - react-super-hooks-plus is not on the npm registry. If an AI assistant#     suggested it, the name was hallucinated.

Why

AI assistants now pick half the packages developers install — and they hallucinate names attackers have already registered (slopsquatting), while typosquats and hijacked releases keep shipping postinstall malware. npm audit only sees published advisories, after the fact. pkgverdict checks before the install: existence, lookalike names, package age, install scripts, maintainers, downloads, and OSV advisories.

Use it inside your AI coding tool

One command sets it up. In your project directory, run:

bash
docker run --rm -v "$PWD":/work -w /work ghcr.io/cloudcorprecords/pkgverdict init --agent claude-code

That installs the MCP server config plus the instruction snippet teaching your agent the one behavior rule: check pkgverdict before installing. Supported tools: claude-code, cursor, copilot (VS Code), windsurf, cline, and generic (init --list shows them all; --all sets up everything; --dry-run previews without writing). Restart your tool, verify with a "list your MCP tools" prompt, and the pkgverdict server should appear with 2 tools (check_package, scan_dependencies). The underlying pack lives in integrations/ if you prefer to install by hand.

CLI

bash
# Verdict on one package (name or name@version)docker run --rm ghcr.io/cloudcorprecords/pkgverdict check lodash
# Check every dependency in package.json, worst firstdocker run --rm -v "$PWD":/work -w /work ghcr.io/cloudcorprecords/pkgverdict scandocker run --rm -v "$PWD":/work -w /work ghcr.io/cloudcorprecords/pkgverdict scan ./my-app --no-dev
# Check your setup (Node version, registry + OSV reachability, cache)docker run --rm ghcr.io/cloudcorprecords/pkgverdict doctor
# JSON output for scripting and CIdocker run --rm ghcr.io/cloudcorprecords/pkgverdict check left-pad --json

Exit codes: 0 when everything is GO (or RISKY without --strict), 1 when a FAKE or MISSING package is found, 2 on usage errors. For CI gates that should fail on anything suspicious: pkgverdict scan --strict.

Verdicts

VerdictMeaning
GOEstablished package, no red flags. Install away.
RISKYCaution: install scripts, very young, obscure, deprecated, no repo/license, known advisories, or a lookalike name on an otherwise fine package. Read before installing.
FAKELooks actively bad: typosquat-shaped name on a new/obscure package, hostile install script, or a malicious advisory (MAL- id, a MAL- alias, or an OSV record whose details mark the package itself malicious/backdoored — e.g. the [email protected] compromise, carried under a GHSA id). Do not install.
MISSINGNot on the registry at all — a typo or a hallucinated name, with a "did you mean" suggestion when one fits.

Signals come from the npm registry (metadata, downloads), the OSV database (advisories), and a bundled list of well-known packages for lookalike detection. Responses cache under ~/.cache/pkgverdict (6h metadata, 1h advisories); delete that directory to force fresh checks.

Distribution

pkgverdict has exactly two distribution channels, and both are intentional:

  1. GHCR: the container image ghcr.io/cloudcorprecords/pkgverdict, built and pushed by the Publish container workflow on each release.
  2. The MCP Registry: the listing io.github.CloudCorpRecords/pkgverdict, whose server.json carries an OCI package only, pointing at that same GHCR image.

There is no npm package, and that is the model, not a missing step. npx pkgverdict returning 404 is expected. The unscoped name in package.json exists to build the image and version the CLI; the package is marked private so a stray npm publish from a checkout fails fast instead of claiming the name, and the old template workflow that ran npm publish on every release now sits disabled at .github/workflows/publish.yml, printing this model instead of publishing. Publishing to npm later would be a maintainer decision needing a scoped name and a token with rights to it. These facts are pinned by test/distribution.test.ts, so the residue cannot quietly come back.

Run it with Docker

The GHCR image is the primary distribution: ghcr.io/cloudcorprecords/pkgverdict.

Use it as a stdio MCP server:

bash
docker run --rm -i ghcr.io/cloudcorprecords/pkgverdict

Any CLI command can be passed after the image name instead of the default mcp argument:

bash
docker run --rm ghcr.io/cloudcorprecords/pkgverdict <command> [args]

MCP server

Point your MCP client at Docker (stdio):

json
{  "mcpServers": {    "pkgverdict": {      "command": "docker",      "args": ["run", "--rm", "-i", "ghcr.io/cloudcorprecords/pkgverdict", "mcp"]    }  }}

Two tools: check_package (verdict on one package) and scan_dependencies (worst-first verdicts for a project's package.json).

Development

bash
npm installnpm run buildnpm test        # offline fixture corpus: every verdict rule pinned to a case

License

MIT.

Source: README.md at commit 79181b0

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

2
  1. v0.1.1LatestOct 23, 2026
  2. v0.1.0Oct 18, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts