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

engineering-loop

v1.2.0

Published

CLI for the Engineering Loop Standard: scaffold engineering-loop.json, persistent project memory, and multi-tool AI agent adapters.

Readme

engineering-loop

CLI for the Engineering Loop Standard: scaffolds engineering-loop.json, persistent docs/memory/, and generated adapters for Claude Code, Cursor, Aider, Codex/Gemini, and Windsurf.

Usage

npx engineering-loop init
npx engineering-loop init --adapters claude,cursor --name my-app
npx engineering-loop sync
npx engineering-loop doctor

Commands

init

| Flag | Description | Default | |---|---|---| | -d, --dir <path> | Target directory | current directory | | -n, --name <name> | Project name written into engineering-loop.json | directory name | | -a, --adapters <list> | Comma-separated adapter ids (claude,cursor,aider,codex,gemini,windsurf) | claude,cursor,aider,codex,windsurf | | -f, --force | Overwrite existing files | false | | --obsidian | Also write a minimal .obsidian/ config into the memory directory | false |

docs/memory/ is already valid Obsidian vault content as-is — plain Markdown, standard [text](file.md) links, no wikilink syntax required. --obsidian just drops in app.json (forces new links Obsidian creates to stay in that same relative-Markdown style, instead of switching to [[wikilinks]]) and a graph.json with each memory file color-coded, so the graph view is legible on first open. No community plugins, no workspace.json — just enough to open the folder and get a useful graph, nothing that assumes you use Obsidian daily.

sync

Re-renders adapter files from the current engineering-loop.json without clobbering hand-edited content. Each generated file wraps its content in a <!-- engineering-loop:managed:start/end --> block; sync replaces only what's inside that block, leaving anything outside it (notes you appended, for instance) exactly as you left it. A file with no managed block at all — hand-authored, or produced by a pre-1.1.0 version of this CLI — is skipped entirely rather than risk overwriting content that isn't actually managed.

| Flag | Description | Default | |---|---|---| | -d, --dir <path> | Project directory | current directory | | -a, --adapters <list> | Comma-separated adapters to sync | the config's own adapters list |

npx engineering-loop sync
✔ Created AGENTS.md
✔ Updated CLAUDE.md
= Unchanged .cursorrules
– Skipped CONVENTIONS.md (no managed block found ...)

doctor

| Flag | Description | Default | |---|---|---| | -d, --dir <path> | Project directory to validate | current directory |

Exits non-zero if engineering-loop.json is missing, invalid against the schema, or a required memory file is missing.

Development

npm install
npm run build   # compiles src/ -> dist/, syncs the schema first
npm test         # vitest (needs Node >= 20; see ADR-006)
npm run lint     # tsc --noEmit

See ../../docs/ADAPTERS.md to add a new adapter — including the managed-block requirement sync depends on.