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

create-revturbine

v0.2.0

Published

Scaffold RevTurbine into an app — installs the SDK, pins the CLI, drops a starter Playbook, and installs the Agent Skills.

Downloads

33

Readme

create-revturbine

Scaffold RevTurbine into an app:

npm create revturbine@latest

It detects your package manager and stack, installs @revturbine/sdk, pins @revturbine/cli into the repo, drops a starter Playbook that runs in local mode with no account, and installs the Agent Skills — then points you at the skill that walks the rest.

This package is a launcher

The scaffold logic lives in @revturbine/cli, as revturbine init. This package exists only because npm create <name> resolves the package create-<name> and never consults bin entries on other packages — so a package by this name has to exist. It carries no logic.

It also has no @revturbine/cli dependency. Instead it runs the newest published CLI at run time:

npm create revturbine@latest  →  npx @revturbine/cli@latest init

Both entry points run the same scaffold:

| You run | What happens | |---|---| | npm create revturbine@latest | this launcher → npx @revturbine/cli@latest init | | npx revturbine init | revturbine init (CLI already pinned in the repo) |

Use the second when the CLI is already pinned in the repo — adding RevTurbine to another package in a monorepo, or re-running the scaffold later.

Why @latest at run time, not a declared dependency

Fetching @revturbine/cli@latest on each run means a CLI release reaches npm create revturbine@latest immediately, and this package never needs republishing for any CLI version.

The alternative — a declared dependency range — always lags: it either pins (and requires a republish per CLI release) or floats within a range (and stops at the range's edge). An earlier version tried a caret and hit a trap: for a 0.x version npm reads ^0.8.0 as >=0.8.0 <0.9.0, so it silently froze at the current minor and never picked up the CLI release that added the skills step. A runtime @latest has no such edge.

The deliberate trade-off: @latest adopts even a breaking CLI major with no gate here. The CLI's own release process is the gate. For a scaffold that runs once per project, always-newest is the right default, and write-once is worth it.

Note this is the opposite of what the scaffold installs into your repo, where @revturbine/cli is pinned exactly — the CLI bundles a version-stamped schema snapshot, so CLI↔config compatibility is a property of your repo and belongs in your lockfile.

Releasing — manual, and rarely needed

Because the launcher fetches the CLI at run time, this package should almost never need republishing — CLI improvements reach users without touching it. When a release is needed (a change to the launcher itself), it is manual: the automation secrets are unavailable to this public repo by design.

  • REVTURBINE_GIT_TOKEN (which auto-tag-release.yml would use to push the tag) is an org secret with visibility: private — deliberately kept out of public repos, and this repo is public.
  • There is no org-level NPM_TOKEN, so release.yml cannot publish here until someone adds a repo-level copy.

Both workflows are committed and correct; they simply skip. To cut a release by hand:

# 1. bump the version in package.json, commit, merge to main
# 2. tag and push (match the new package.json version)
git tag vX.Y.Z && git push origin vX.Y.Z
# 3. publish (npm 2FA prompts for an OTP or browser approval)
npm publish --access public

Links