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

@plurnk/plurnk-meta

v2.0.2

Published

Extension discovery and trust primitives shared by every plurnk kind, and the teaching material the plurnk service gives models: policy, Recap, the plurnk skill and scheme references.

Readme

@plurnk/plurnk-meta

What plurnk's packages share that no single package owns: extension discovery and trust, and the teaching material the service gives models.

Membership primitives (import Meta from "@plurnk/plurnk-meta"): shared kind identity, trust, attribution, enumeration, and root resolution for each kind's scanner. SPEC.md owns the complete contract ({§extension-discovery}).

  • Meta.declaresKind(manifest, kind) — accepts one exact string kind identity ({§extension-kind}).
  • Meta.isTrusted(packageName, env?) — the PLURNK_EXTENSIONS_TRUSTED_ONLY gate: ""/"0" off; any value on, @plurnk/* always trusted plus a comma-separated allowlist. An unset key is answered by this package's own panel, which ships the gate on.
  • Meta.normalizeAttribution(raw, packageName) — normalize an always-on package declaration, including the reserved @plurnk/ namespace rule ({§extension-attribution}).
  • Meta.runtimeAttribution(source, context, packageName) — pull and normalize an extension's optional synchronous attributions function for one provider emission attempt.
  • Meta.composeAttributions(...lists) — flatten, deduplicate, and sort opaque tag lists.
  • Meta.packageDirs(nodeModulesDir) — scope-agnostic, symlink-aware enumeration across Node's ancestor resolution chain as { dir, name } candidates; the nearest package name wins. Ordering and filtering are the caller's policy.
  • Meta.nearestNodeModules(fromDir) — walk up to the nearest node_modules holding the ecosystem (witness: @plurnk scope); null when absent.

The teaching corpus: authored policy, an optional Recap, the Plurnk skill entry, and built-in scheme references resolved from this installed package. Meta owns the source bytes and membership; core owns admission, resource composition, and projection. See CORPUS.md and {§teaching-corpus}.

Extension packages declare one package.json#plurnk.kind. Standard Agent Plugin bundles instead put that same declaration under plugin.json#extensions.ai.plurnk. The kind's loader and lifetime stay unchanged; kind: "module" opts into the daemon lifecycle. Extensions install through npm, with user plugin-folder loading also available for modules. Never declare both. Shared manifest and filesystem validation is exported from @plurnk/plurnk-meta/agent-plugin; the portable component loader is @plurnk/plurnk-agent-plugins. Extension imports use the same operator trust gate.

An admitted extension package may declare always-on plurnk.attribution tags and its loaded object may return per-attempt tags from attributions(context) ({§extension-attribution}). MIT.