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

@qa-ai-stlc/runner-security

v1.16.0

Published

On-demand, non-destructive black-box security audit: an authorization-gated probe, security checks and findings registered as evidence and defect drafts.

Readme

@qa-ai-stlc/runner-security

The black-box security audit engine. It is an on-demand capability outside the regular pipeline: it runs only when testing.security is in-scope and only after the operator approved an authorization (environment, checks, identities, prohibited actions, the exact mutations allowed, rate limit and request budget). The approval is bound to the authorization's content and to the environment's address and allowlist, so editing either withdraws it.

Every check reaches the application through one probe, which holds the authorized limits: nothing outside the authorized origin, no request that is not a read unless the authorization names that exact method and path, no faster than the rate limit, no more than the request budget, and no redirect followed. Every request, sent or refused, is logged in the audit result.

Checks

| Class | What it looks at | | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | headers | Content-Security-Policy, nosniff, framing protection, HSTS (HTTPS only), Referrer-Policy, a framework or version named in Server / X-Powered-By | | cookies | HttpOnly, Secure (HTTPS only) and SameSite on every cookie set for an anonymous visitor; cookie values are never recorded. A session cookie is usually set only by a sign-in, so without a cookie before sign-in this is skipped | | cors | Whether a foreign origin or the null origin is allowed, and whether with credentials | | errors | Stack traces, database errors and framework banners in a missing-page and a malformed-escape response | | encoding | Whether the usual query parameters are written into a page unencoded. A clean result is uncertain: the parameters the application really reads are not discovered |

| csrf | Replays each mutation the authorization names, with the identity's session, a foreign Origin and no anti-forgery token. The authorization should carry a complete request body the operator vouches for, otherwise a refusal is uncertain. The sign-out path is never replayed | | authz | Opens each restricted route as the identity that may, as the one that must not (role low), and with no session. First confirms the low identity's session is alive, because a dead one is refused everywhere | | session | Signs out and replays the old session cookie on a page that tells signed-in from anonymous; it ends the identity's session, so it runs after the checks that use it |

Identities sign in through the saved storage state under .qa/auth/, or through authenticate() (a scripted login whose page must be inside the authorized origin, or an attached Chrome). An identity that cannot sign in makes the checks that need it blocked, not passed.

Code-assisted level

When source.path is set, three more classes read the application's source checkout. They run only when the authorization names them, and they only read: the checkout is exposed without any write, directories such as node_modules, dist and .git are left out, and binary or oversized files are counted but not read. Findings carry codeReferences (project-relative file and line), which the defect draft lists under "Code references".

| Class | What it looks at | | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | dependencies | npm audit over the lockfile (found at or above source.path; a workspace is audited on its own). It sends package names and versions to the configured package registry, so naming the class is also consent to that. Other package managers are skipped; an audit that cannot run is blocked | | secrets | Provider key shapes, private key headers, JWTs, bearer tokens, password and API key assignments, and secrets with a literal value or literal fallback. Only the kind of secret and where it is are reported, never the value. A match in test code or sample data has low confidence | | configuration | Debug and test-only routes, debug mode, cookies without HttpOnly or Secure, disabled certificate verification, a wildcard CORS origin. A setting beside an environment check (NODE_ENV) is not reported. These are patterns in text, so a clean result is uncertain and test code is not examined |

Without source.path, or when it points at nothing, these classes are skipped with a note and the audit logs a notice that it ran black-box only.

A check ends passed, failed, skipped, blocked or uncertain; the last three are never reported as passed, and an audit with a blocked check or an exhausted budget is partial. Findings become tracker-neutral defect drafts with category: security; accepting them is the ordinary defect gate.

Part of QA-AI-STLC. See the repository root for license, contributing and security information.