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

@kb-labs/release-manager-cli

v2.94.0

Published

KB Labs Release Manager - CLI commands for release management

Readme

@kb-labs/release — Release Manager

Atomic release plugin for the KB Labs platform. Takes your code → computes version bumps → runs pre-release checks → publishes packages → tags git.

Designed to be a single composable step in a workflow: the output artifacts (published packages, git tags, report, changelog) are consumed by the next step — whether that's opening a GitHub PR, sending a Slack notification, or triggering a deploy. The plugin itself does none of that.


Quick Start

# See what would be released (no changes made)
kb release plan

# Interactive release: shows plan, asks to confirm, then executes
kb release run

# CI/headless mode — no prompt, uses NODE_AUTH_TOKEN
NODE_AUTH_TOKEN=<token> kb release run --yes

Commands

kb release plan

Discover modified packages and compute version bumps based on conventional commits. Does not publish anything.

kb release plan
kb release plan --scope @my-org/core
kb release plan --bump minor
kb release plan --json

Flags:

| Flag | Description | |------|-------------| | --scope | Filter packages by name or glob (e.g. @my-org/core, packages/*) | | --bump | Override bump: patch, minor, major, auto (default: auto) | | --json | Output plan as JSON |


kb release run

Full release pipeline: plan → confirm → checks → build → verify → publish → git tag.

kb release run
kb release run --dry-run
kb release run --yes
kb release run --yes --no-verify
kb release run --scope @my-org/core --bump minor

Flags:

| Flag | Description | |------|-------------| | --scope | Release only packages matching this scope | | --bump | Override version bump strategy | | --dry-run | Simulate everything, publish nothing | | --yes, -y | Skip confirmation prompt (CI/headless mode) | | --no-verify | Pass --no-verify to git push — bypasses pre-push hooks | | --skip-checks | Skip pre-release checks | | --skip-build | Skip build step | | --skip-verify | Skip artifact verification (npm pack check) | | --strict | Fail on any check failure (including optional checks) | | --json | Output result as JSON |

Exit codes: 0 = success or cancelled, 1 = failure.


kb release verify

Validate release readiness without executing anything.

kb release verify
kb release verify --fail-if-empty
kb release verify --fail-on-breaking
kb release verify --allow-types feat,fix

| Flag | Description | |------|-------------| | --fail-if-empty | Exit 1 if no packages need a version bump | | --fail-on-breaking | Exit 1 if breaking changes detected | | --allow-types | Comma-separated commit types required (e.g. feat,fix) |


kb release changelog

Generate a changelog from git history using conventional commits.

kb release changelog
kb release changelog --from v1.0.0
kb release changelog --template corporate-ai
kb release changelog --format md --level detailed

| Flag | Description | |------|-------------| | --from | Start commit or tag | | --to | End commit (default: HEAD) | | --since-tag | Shorthand for --from <tag> | | --template | Builtin: corporate, corporate-ai, technical, compact. Or path to custom template. | | --format | json, md, both (default: both) | | --level | compact, standard, detailed (default: standard) | | --breaking-only | Only breaking changes |


kb release rollback

Restore package.json versions from the last snapshot taken before release run.

kb release rollback
kb release rollback --json

kb release report

Show the last release execution report.

kb release report
kb release report --json

Configuration (kb.config.json)

All plugin behavior is controlled via the release section of your kb.config.json (under profiles[].products.release).

Minimal config

{
  "profiles": [{
    "products": {
      "release": {
        "versioningStrategy": "independent"
      }
    }
  }]
}

Full reference

{
  "release": {
    "versioningStrategy": "independent",
    // "independent"  — each package bumped by its own commits (default)
    // "lockstep"     — all packages get the same (max) bump
    // "adaptive"     — lockstep if any breaking change, else independent

    "bump": "auto",
    // Default bump when commits are ambiguous (overridden by --bump flag)
    // "auto" = detect from conventional commits

    "registry": "https://registry.npmjs.org",
    // npm registry URL (default: https://registry.npmjs.org)

    "strict": false,
    // Fail the release if any non-optional check fails (same as --strict flag)

    "packages": {
      // Package discovery — which packages to include in the release
      "paths": ["packages/*", "apps/*"],
      // Directories to scan. If omitted, the entire repo tree is scanned.

      "include": ["@my-org/*"],
      // Include only packages matching these patterns (name or path glob)

      "exclude": ["@my-org/internal-*", "apps/playground"]
      // Exclude packages matching these patterns
    },

    "scopes": {
      // Per-scope overrides — scope is passed via --scope flag
      "@my-org/core": {
        "packages": {
          "include": ["@my-org/core", "@my-org/types"]
        },
        "checks": [
          // If set, replaces global checks for this scope
          { "id": "test", "command": "pnpm", "args": ["test", "--", "--run"], "runIn": "scopePath" }
        ]
      }
    },

    "checks": [
      // Pre-release checks — run before version bump and publish
      {
        "id": "build",
        "command": "pnpm",
        "args": ["run", "build"],
        "runIn": "scopePath",
        // runIn: where to execute
        //   "scopePath"  — once in the scope directory (default for monorepo builds)
        //   "repoRoot"   — once in the git repo root
        //   "perPackage" — once per discovered package
        "timeoutMs": 300000
      },
      {
        "id": "tests",
        "command": "pnpm",
        "args": ["run", "test", "--", "--run"],
        "runIn": "scopePath",
        "timeoutMs": 120000,
        "optional": true
        // optional: true means failure is reported but does not block release
      },
      {
        "id": "typecheck",
        "command": "pnpm",
        "args": ["run", "type-check"],
        "runIn": "scopePath",
        "timeoutMs": 120000,
        "optional": true
      }
    ],

    "publish": {
      "access": "public",
      // npm publish --access: "public" (default) or "restricted"

      "packageManager": "pnpm"
      // Package manager to invoke: "pnpm" (default), "npm", "yarn"
    },

    "changelog": {
      "locale": "en",
      // Locale for generated text: "en" (default), "ru"

      "template": "technical",
      // Builtin: "corporate" | "corporate-ai" | "technical" | "compact"
      // Or path to a custom .ts template file

      "format": "both",
      // "json" | "md" | "both"

      "level": "standard",
      // "compact" | "standard" | "detailed"

      "includeTypes": ["feat", "fix", "perf", "refactor"],
      // Commit types to include

      "excludeTypes": ["chore", "style", "test"]
      // Commit types to exclude
    },

    "git": {
      "provider": "auto"
      // Git provider for link generation: "auto" | "github" | "gitlab" | "generic"
    },

    "rollback": {
      "enabled": true,
      "maxHistory": 5
    }
  }
}

Artifacts

After a successful kb release run, the plugin writes:

| Artifact | Path | Description | |----------|------|-------------| | Report | .kb/release/history/<scope>/<timestamp>/report.json | Full execution report with timings, published packages, errors | | Changelog | .kb/release/CHANGELOG.md | Generated changelog for this release | | Package changelogs | <package>/CHANGELOG.md | Per-package changelog entries | | Git tags | In git | v1.2.3 (lockstep) or @my-org/[email protected] (independent) |

These paths are declared in the plugin manifest as artifacts — available for consumption by the next step in your workflow.


CI / Headless Mode

# Token auth — no OTP prompt
NODE_AUTH_TOKEN=npm_xxx kb release run --yes

# If pre-push hooks slow down CI or you manage them separately:
NODE_AUTH_TOKEN=npm_xxx kb release run --yes --no-verify

# Output machine-readable result
NODE_AUTH_TOKEN=npm_xxx kb release run --yes --json

Exit codes:

  • 0 — success or user cancelled
  • 1 — pipeline failure (checks, build, publish, or git error)

The full report is in .kb/release/history/ regardless of exit code.


Pre-push Hook Visibility

When a git push step takes unexpectedly long, the CLI shows elapsed time:

[18.3s] Committing and tagging release...

If you know your pre-push hooks are slow, you can either:

  • Pass --no-verify to bypass them during release (hooks still run on regular commits)
  • Use runIn: "scopePath" checks to run equivalent validation before the push step

Using with Workflow Engine

The release plugin is an atomic step. Example workflow:

steps:
  - id: release
    plugin: "@kb-labs/release"
    command: release:run
    args: ["--yes", "--json"]
    env:
      NODE_AUTH_TOKEN: "${secrets.NPM_TOKEN}"

  - id: open-pr
    depends_on: [release]
    # reads release artifacts (report.json, git tags) from previous step

The plugin does not open PRs, send notifications, or trigger deploys — that's your workflow's job.