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-ink

v1.1.0

Published

Scaffold AI-native projects with structured versioning, changelogs, and agent memory

Readme

create-ink 🖊

Scaffold AI-native projects with structured versioning, changelogs, and agent memory.

The Problem

AI coding agents ship code fast — but without structure, projects lose context between sessions. Agents commit without meaningful messages, skip documentation, use --no-verify to bypass hooks, and leave no trace of why decisions were made. When you (or another agent) pick up the project later, there's no history to build on.

What ink Does

ink adds a lightweight versioning layer to any project that keeps agents accountable:

  • Conventional commits enforced via git hooks — every commit has a clear type and description
  • Version bumping tied to commit type — fix: = patch, feat: = minor, breaking = major
  • A history file per version — agents document what changed, why, and what they learned
  • Agent instructions for every major toolCLAUDE.md (Claude Code), AGENTS.md (Cursor, Cline, pi, Aider, Continue), .github/copilot-instructions.md (GitHub Copilot)
  • Git hooks that can't be skippedcommit-msg validates on commit, pre-push catches --no-verify bypasses, post-commit auto-pushes

The result: a project any agent or human can pick up and immediately understand.

Quick Start

npx create-ink my-project
cd my-project

Or add to an existing project:

cd my-existing-project
npx create-ink init

What It Creates

my-project/
  ink.config.json      ← project config (includes version)
  CLAUDE.md            ← agent instructions (Claude Code)
  AGENTS.md            ← agent instructions (Cursor, Cline, pi, Aider, Continue)
  .github/
    copilot-instructions.md  ← agent instructions (GitHub Copilot)
  .ink/
    cli.js             ← version management CLI
    history/
      0.0.1.md         ← first version history
  .husky/
    commit-msg         ← validates commits + history files
    pre-push           ← catches --no-verify bypasses
    post-commit        ← auto-pushes after commit
  package.json

Same instructions, three files — every major AI coding tool picks them up automatically.

Workflow

# 1. Make code changes

# 2. Bump version
node .ink/cli.js bump fix     # 0.0.1 → 0.0.2
node .ink/cli.js bump feat    # 0.0.1 → 0.1.0

# 3. Fill in .ink/history/<version>.md

# 4. Commit
git add -A && git commit -m "fix: resolve auth race condition"

The commit is rejected if the message isn't conventional, or if a fix:/feat: commit is missing its history file.

History Files

Each version gets one markdown file in .ink/history/. One file to read, full picture:

# 0.0.2
> 2026-03-29 — fix

## What changed
Fixed auth race condition causing intermittent 401 errors.

## Why
Users reported random login failures after OAuth redirect.

## Decisions
Chose mutex over queue — simpler, sufficient for our concurrency level.

## Bugs
Found edge case with expired refresh tokens during mutex wait.

## Context
Next: rate limiting for the OAuth endpoint.

Only ## What changed is required. The rest is optional — agents include what's relevant and skip the rest. Failed attempts, dead ends, and architectural decisions all get captured so they're not repeated.

Commands

node .ink/cli.js bump fix|feat|breaking   # Bump version, create history file
node .ink/cli.js status                   # Show current version
node .ink/cli.js log                      # Print version history

FAQ

Does this work with non-Node projects? Yes. The target project can be any language. You just need Node installed for the hooks and CLI.

What about chore commits? chore: commits don't require a version bump or history file.

Existing project? npx create-ink init detects the version from your package.json and starts from there.

License

MIT