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

changepack

v1.0.0

Published

Change packages for Claude Code. A skill you copy into your repo, not a framework you install.

Downloads

34

Readme

changepack

A change package is a small folder that holds one unit of planned work: the problem, the intended behavior, and the tasks that get you there. It opens when the work starts and it is archived when the work is done.

changepack is the procedure for running them, written as a Claude Code skill. The part that matters is not the folder. It is the gate in front of it:

Never open a change package because the work touches behavior. Open one because a single pass cannot land it.

Most spec driven tooling has one path, the long one, and charges you a planning ritual for a two line fix. This one classifies first and says "just do it" out loud, which is the answer most of the time.

Install

Copy it into the repository it will govern:

npx changepack

Or, without running any code of mine:

npx degit allan-lancioni/changepack/skill .claude/skills/changepack

Then open Claude Code in that repository and run /changepack. It reads the repo, proposes a configuration, and writes one file. That is the whole setup.

The skill is committed with your project, so everyone who clones it gets the same process, with nothing to install.

Using it

Everything runs through /changepack, in plain language:

| You say | It does | |---|---| | "plan the multi tenant migration" | Classifies. If it is too big for one pass, asks before opening the package, writes it, commits it, and stops | | "start task 2" | Summarises what is left, asks how far to run, then implements and checks items as they validate | | "run the whole change" | Dispatches a fresh agent per group, validates each one itself, commits group by group | | "review this" | Reads and reports, ordered by impact, and changes nothing | | "close it" | Audits the criteria against real behavior, archives with a date | | "update changepack" | Reads what each release between your version and the latest costs, says so, then replaces the skill | | "rename this variable" | Tells you it does not need a package, and does it |

Every commit it makes names the package that produced it, in trailers rather than in prose, so git log --grep='Change: <slug>' returns a whole change in order. The subject says what is true now, the body stays under 300 characters, and the reasoning lives in the package, which is archived. No agent is credited as co-author unless your configuration asks for one.

It stops on its own when a decision needs you: schema, persistence, compatibility, observable behavior. Everything else runs without a checkpoint. It commits at three moments, the package when it opens, each group as it lands, and the archive move at closure, and reports what it did instead of asking whether it may.

There are two questions it always asks, both as one prompt with the options in front of you: whether to open a package at all, and, once one is open, whether to stop after each group or run to the end.

The one file you own

CHANGEPACK.md, at the root of your repository, holds where the packages live, which documents a change is held to, the language for written artifacts, the validation command, whether commits land on their own, and the paths nothing may write. It is yours, it sits outside the skill directory, and updates never touch it. It reads as plain documentation, so a new colleague learns the process from it without installing anything.

Everything under .claude/skills/changepack/ is replaceable. Nothing of yours belongs in there, which is what makes updating safe:

npx changepack --force

You rarely have to remember that. When a package closes, and only then, the skill compares itself against the latest release and offers to update. It asks about a version once: decline it and it is recorded as a hold, so the question comes back only when something newer ships. updates: off in your config stops the check, and the network call with it. Nothing is checked while a package is open, because a package planned under one procedure keeps it until it closes.

Specs are optional

A package carries a spec-delta.md when the change alters something a later change is held to: a behavior spec, CLAUDE.md, AGENTS.md, anything under .claude/. It names each rule added, changed or removed, and folds into the document at closure.

If your repository keeps no normative documents at all, nothing is missing. The intended behavior is written in the package and read from there. Adopting this does not start with writing specs for a system you already built.

What is in the box

skill/                  what gets copied into your repository
  SKILL.md              the gate, the routes, and direct work
  check-update.mjs      is there a newer version, and what does it cost
  references/
    init.md             first run: infer the config, write it, stop
    plan.md             write a package, stop before implementing
    run.md              dispatch a group at a time, validate each one
    work.md             implement a task, continue through its group
    review.md           read and report, change nothing
    close.md            audit against behavior, archive
    commit.md           validate, report, wait, commit once per run
    update.md           offer the new version, say what it costs, replace
  templates/
    change.md           the context, the goal, the drawing, the cost
    tasks.md            the groups, and what proves each one
    spec-delta.md       the rules a change adds, changes or removes
    changepack.md       the config file, written on the first run

About 32k characters of procedure, held to ceilings that are checked: 3.6k for SKILL.md, which is always loaded, and 3.6k for the widest single route, so a turn loads between 4k and 8k depending on where it goes.

There is still nothing to install in your repository: no dependencies, no services, no state outside it. The only thing that runs is the update check, one request to the npm registry made at one moment, and what it remembers is a line in the file you own. This repository keeps a scripts/check.mjs for its own invariants, which the installer never copies and npm never ships.

License

MIT.