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

bsmnt

v0.2.7

Published

CLI to scaffold basement projects and add integrations

Readme

bsmnt 0.2.7

Your project starts here. One command to go from zero to a fully configured Next.js project with our stack, CMS, agent skills, and everything wired up.

bsmnt

What's in 1.0

Instant project scaffolding from templates

Spin up a new project based on the stack we actually use. Pick a template, answer a few prompts, and you're running.

| Template | What you get | |----------|-------------| | Default | Next.js 16 + React 19 + Tailwind v4 + Biome + Zustand | | WebGL | + React Three Fiber + Three.js + optional WebGPU renderer toggle | | Experiment | + Creative coding setup with navigation UI |

Every template ships with TypeScript strict mode, React Compiler, Turbopack, PostCSS functions (tovw, torem, columns), component generation scripts, and the full lib/ architecture.

Full Sanity integration — code and infrastructure

Not just boilerplate files. The CLI sets up your entire Sanity stack:

  • Embedded Studio at /studio with schemas, structure builder, and live preview
  • GROQ queries with TypeScript type generation
  • Draft mode with visual editing
  • API routes for revalidation webhooks
  • .env.local with all credentials

Automated project creation — The CLI creates a Sanity project on your dashboard, generates API tokens, and wires everything into your repo. If you're not logged in, it opens sanity login inline — you never leave the terminal.

Add Sanity to existing projects

Already have a project running? The integrate command injects Sanity into it. It detects your project structure (app/ or src/app/) and smart-merges layout, sitemap, and integration files without overwriting your code.

Real-world validated — this is how we integrated Sanity into the ROX project.

bsmnt integrate --sanity

Agent skills out of the box

Pick your agent (Claude Code or OpenCode) and the CLI installs curated skills so it understands our stack from the start:

  • React + Next.js performance patterns
  • Web design and accessibility guidelines
  • Frontend design standards
  • WebGPU/TSL guides (for WebGL and Experiment templates)
  • Sanity agent toolkit (when Sanity is selected)

For Claude Code + Sanity, it also registers the Sanity MCP server automatically.

Project Structure

Single TypeScript package published as bsmnt on npm:

src/
├── index.ts                     # Commander program, prompts, routing
├── paths.ts                     # Centralized path resolution
├── configs/animations.ts        # GSAP / Motion dependency configs
├── helpers/
│   ├── create/                  # Project creation pipeline
│   ├── integrate/               # CMS integration injection
│   │   └── sanity/              # Sanity files, config, mergers
│   └── add/                     # Hook injection
└── utils/                       # detect-project, format-results
templates/                       # Standalone project templates
template-hooks/                  # Reusable React hooks
plugins/                         # Biome linting rules (Grit patterns)

(SOON) Installation

npm install -g bsmnt

For local development -- clone the repo and run:

bun install
npm link .

Release Channels

This repo follows a two-channel release model similar to the Next.js stable/canary approach, while keeping Changesets as the version source of truth.

  • latest (stable): production releases from the Changesets release PR flow.
  • canary: snapshot prereleases from main under npm dist-tag canary triggered manually.

Install stable:

npm install -g bsmnt@latest

Install canary:

npm install -g bsmnt@canary

Verify dist-tags:

npm view bsmnt dist-tags

How to trigger stable releases:

  1. Add a changeset in your feature PR (bun run changeset).
  2. Merge PR(s) into main.
  3. GitHub Actions updates/opens the release PR with version/changelog changes.
  4. Merge that release PR to publish to npm latest.

How to trigger canary releases:

  1. Add a changeset in your feature PR (bun run changeset).
  2. Merge the PR into main.
  3. In GitHub Actions, run Canary Release with workflow_dispatch on the main branch.
  4. The workflow publishes snapshot builds to npm tag canary when pending changesets exist.

Usage

Interactive mode — answer prompts step by step:

bsmnt

Skip prompts with flags:

bsmnt create my-app --webgpu --sanity --gsap --claude --no-hooks

Add Sanity to an existing project:

bsmnt integrate --sanity

All Flags

bsmnt [command]

Commands:
  create|c [project-name]   Create a new project
  integrate|i               Add CMS integration to existing project
  add|a                     Add hooks to an existing project

Templates:
  -d, --default             Next.js starter
  --webgpu                  Three.js/WebGPU starter
  --experiment              Creative coding

CMS:
  --sanity                  Sanity CMS
  --no-cms                  No CMS

Animation:
  --gsap                    GSAP
  --motion                  Framer Motion
  --no-animation            No animation library

Agent:
  --claude                  Claude Code
  --opencode                OpenCode

Hooks:
  --no-hooks                Skip hook selection

Other:
  -h, --help                Show help

Generated Project Commands

bun dev               # Dev server with Turbopack
bun build             # Production build
bun lint              # Biome linter
bun lint:fix          # Auto-fix lint issues
bun typecheck         # Type check with tsgo
bun generate          # Scaffold components/hooks
bun analyze           # Bundle size analysis

With Sanity:

bun sanity:extract    # Extract Sanity schema
bun sanity:typegen    # Generate TS types from schema

License

ISC