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

@frappe-inspector/cli

v1.4.0

Published

Frappe-aware CLI security analysis, evidence, SARIF and migration safety for ERPNext apps.

Readme

Frappe Inspector CLI

frappe-inspector scan .
frappe-inspector scan ./frappe-bench --app erpnext
frappe-inspector explain . --rule FI040
frappe-inspector diff . --base-ref origin/main --format sarif --output frappe-inspector.sarif
frappe-inspector snapshot . --output .frappe-inspector/snapshot.json
frappe-inspector license activate FI-PRO-XXXX-XXXX-XXXX-XXXX-XXXX
frappe-inspector license status
frappe-inspector license refresh
frappe-inspector license deactivate

The CLI returns 0 when the configured threshold is clear, 1 when findings reach the threshold, 2 for execution errors and 3 when a requested Universal Pro capability is not licensed.

Use --app <app-name> when scanning a complete bench. Frappe Inspector indexes dependencies for resolution, but reports and exit status only include findings from the selected app. References found in test and patch files are retained as review notes rather than active errors.

Security diagnostics follow whitelisted and conventional web entrypoints through local helpers. Markdown, JSON, SARIF and terminal output include the entry, flow and sensitive sink when available. Query filters and projected fields are validated against the effective DocType schema, while recognized optional-app and runtime DocType guards reduce integration noise.

Use explain with --rule, --source and --line to isolate one finding and its evidence without losing normal report formatting.

Reports now include concise fix guidance for high-value Frappe rules. Use Markdown or SARIF in CI when you want reviewers to see both the source-to-sink evidence and the recommended remediation.

Universal Pro review workflow

CLI 1.4.0 adds these commands and options:

frappe-inspector scan . --new-only --base-ref origin/main
frappe-inspector scan . --policy .frappe-inspector/policy.json
frappe-inspector scan . --suppressions .frappe-inspector/suppressions.json --audit-output suppression-audit.json
frappe-inspector plan . --base-ref origin/main --include-safe --output migration-plan.json
frappe-inspector diff . --base-ref origin/main --format html --output frappe-inspector.html
  • --new-only removes findings whose stable fingerprints are already present at the Git or snapshot baseline. It does not classify changed lines or prove the rest of the repository safe.
  • --policy accepts version 1 JSON with minimumSeverity, failOn and per-rule enabled or severity values.
  • --suppressions accepts version 1 entries matched by fingerprint or rule and optional path. Every entry requires id, justification, author, createdAt and expiresAt. --audit-output records applied, expired and unused entries.
  • --new-only uses stable fingerprint multisets and Git rename detection, not changed-line heuristics.
  • plan emits ordered preflight, backfill, schema and verification phases with non-executed <site>/<patch> command templates.
  • --format html writes a self-contained escaped report.
  • PR comments are a GitHub Action capability and are not a CLI capability.

These interfaces require Universal Pro.

frappe-inspector scan ./frappe-bench --app erpnext --format markdown
frappe-inspector explain ./frappe-bench --rule FI042 --source apps/erpnext/api.py --line 42

Benchmark proof is reproducible from the monorepo: npm run check:benchmark validates the 22-case controlled Frappe-specific corpus, and node scripts/run-ground-truth-benchmark.mjs --competitor packages/core/test-fixtures/ground-truth/competitors/bandit-semgrep-2026-08-01.json compares against real Bandit/Semgrep runs. The report separates Frappe Inspector's 3 migration-only expectations from the 17-finding generic competitor subset.

license activate stores the subscription key and signed certificate in ~/.frappe-inspector/license.json with user-only permissions. FRAPPE_INSPECTOR_LICENSE_KEY and --license-file remain ephemeral and are never persisted. license deactivate releases both CLI and MCP access for this device.

Documentation: https://github.com/Belius303/frappe-inspector-support