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

initup

v1.0.2

Published

initup — the deterministic hands your AI agent uses to touch your project. Install + patch + generate a technology as one idempotent, reversible operation. CLI command: `initup`.

Readme

initup

The deterministic hands your AI agent uses to touch your project.

Your coding agent is brilliant at deciding what to do and unreliable at doing it the same way twice. Ask it to "add HeroUI" and it searches docs, guesses, and maybe pastes HeroUI v2's HeroUIProvider that v3 deleted — and if step 4 fails, you're left with a half-migrated project to untangle by hand.

initup is the tool the agent calls instead. Adding a technology is one deterministic operation — install the deps and patch every config and generate the code — and if anything fails, it rolls the whole thing back to exactly where you started.

agent: "add mongodb to the api"
  → initup add_plugin("mongodb")
      install mongoose · write .env · src/config/mongo.ts · wire server.ts
      ✗ npm install failed
      ↩ rolled back — every file restored, nothing left behind

That rollback is the whole point. It's what makes it safe to let an autonomous agent modify your codebase: the worst case is a clean no-op, never a broken tree. Same input → same result, every time.

Install

npm i -g initup      # or: npx initup <command>

Use it

initup detect [--json]          # fingerprint the project
initup add heroui [--app web]   # install + patch + generate, transactionally
initup manage                   # interactive: app → plugin
initup doctor [--json]          # report project health
initup pack ./plugins/heroui    # author folder → single distributable JSON
initup make plugins/x/plugin.ts # compile a typed plugin.ts → single JSON

--json keeps stdout pure JSON (for scripts/agents), --silent skips prompts, --yes auto-approves the consent gate. A third-party plugin needing exec/network shows a dry-run plan and asks before touching disk.

Write a plugin

import { definePlugin } from "initup";

export default definePlugin({
  name: "tailwind-v4",
  displayName: "Tailwind CSS v4",
  version: "1.0.0",
  appliesTo: { framework: "react" },
  languages: ["ts", "js"],
  capabilities: { install: true, exec: false, network: false },
  detect: { dependency: "tailwindcss" },
  prompts: [],
  setup: async (ctx) => {
    ctx.installDev(["tailwindcss", "@tailwindcss/vite"]);
    ctx.patchConfig(ctx.configFile("vite") ?? "vite.config.ts", {
      ensureImport: { tailwindcss: "@tailwindcss/vite" },
      addToArray: { path: "plugins", value: "tailwindcss()" },
    });
    ctx.ensureLine(ctx.stylesheet({ createIfMissing: true }),
      '@import "tailwindcss";', { position: "top" });
  },
});

Compile it: initup make plugins/tailwind-v4/plugin.ts → a single distributable JSON.

Docs

Full guides, the complete ctx API reference, the execution model, and 30+ first-party plugins (JS/TS and Python) live in the repo:

https://github.com/Krishnesh-Mishra/initup

MIT © Krishnesh Mishra