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

@pap.dev/workbench

v0.1.6

Published

[![CI](https://github.com/plan-and-publish/workbench/actions/workflows/ci-workbench-cli.yml/badge.svg)](https://github.com/plan-and-publish/workbench/actions/workflows/ci-workbench-cli.yml) [![npm](https://img.shields.io/npm/v/@pap.dev/workbench)](https:/

Downloads

757

Readme

workbench CLI

CI npm JSR License: MIT

A terminal UI for initializing a workbench repository — fork, clone, and wire up git submodules interactively or non-interactively.

Prerequisites

  • Bun installed
  • gh CLI installed and authenticated (gh auth login)

Installation

cd packages/workbench-cli
bun install
bun link

After linking, the workbench command is available globally.

Run without installing

bun run src/index.ts

Quick start

Interactive (TUI)

workbench --init

Launches an interactive flow: select a fork target (org or personal account), name your workbench, fork and clone the template repo, then optionally run the setup wizard.

Non-interactive

workbench --init --no-tui --name my-project

Init + setup in one command

workbench --init --no-tui --name my-project --org myorg --code-repository https://github.com/myorg/api

Existing repo

If you already have a workbench repo cloned:

workbench --tui

Init flags

| Flag | Description | Default | |------|-------------|---------| | --init | Initialize a new workbench (fork & clone) | false | | --name <name> | Name for the fork and local folder | workbench | | --no-fork | Clone without forking (read-only) | false | | --no-tui | Skip TUI, use defaults or provided values | false |

Setup flags

These flags work with both --init and standalone usage:

| Flag | Description | Default | |------|-------------|---------| | --org <name> | GitHub organization name | personal account | | --code-repository <url> | Code repository URL (can be repeated) | — | | --resource-repository <url> | Resource repository URL (can be repeated) | — | | --code-branch <name> | Branch for all code repositories | main | | --resource-branch <name> | Branch for all resource repositories | main | | --index <on\|off> | Run ck indexing after init | on | | --tui | Launch interactive TUI mode | false |

What is ck? ck is a hybrid code search tool by BeaconBay that fuses lexical (BM25/grep) precision with embedding-based recall, so you can find the right code even when the exact keywords aren't there.

Examples

# Interactive init
workbench --init

# Non-interactive init with custom name
workbench --init --no-tui --name my-project

# Clone without forking (read-only)
workbench --init --no-tui --no-fork --name explore-wb

# Init + setup in one command
workbench --init --no-tui --name my-project --org myorg --code-repository https://github.com/myorg/api

# Standalone setup (existing repo)
workbench --org myorg --code-repository https://github.com/myorg/backend

# Interactive setup (existing repo)
workbench --tui

What the setup wizard does

Running init walks through:

  1. Select a GitHub organization or personal account.
  2. Select code repositories — added as submodules under projects/.
  3. Select resource repositories — added as submodules under resources/.
  4. Configure the target branch per repository.
  5. Optionally index with ck.

Afterwards, .workbench/config.yaml is written with the selected configuration.

Error scenarios

| Error | Cause | Resolution | |-------|-------|------------| | A repository named "X" already exists under Y | Fork name conflict | Choose a different --name | | A folder named "X" already exists in the current directory | Local folder conflict | Remove or rename the folder, or choose a different name | | gh CLI is not authenticated | gh auth not set up | Run gh auth login | | Invalid name "X" | Bad characters in name | Use only alphanumeric, -, ., _ |

Development

# Type-check
bun tsc --noEmit

# Build
bun run build

# Smoke test the built output
./dist/index.js --help

Source lives in src/. The entry point is src/index.ts.

Releases

Releases are tag-driven and publish to both npm and JSR automatically. Maintainers run:

npm run release:patch   # 0.1.x
npm run release:minor   # 0.x.0
npm run release:major   # x.0.0

See GitHub Releases for the version history.

Contributing

See CONTRIBUTING.md for the full guide.

License

MIT — see LICENSE.