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

attrition-sh

v0.1.0

Published

CLI for installing agent harness + UI + RAG + eval patterns from attrition.sh into .claude/skills/ and AGENTS.md.

Readme

attrition

CLI for the attrition.sh Agent Workspace catalog. Installs agent harness, UI, RAG, and eval patterns from the catalog into .claude/skills/ and AGENTS.md in under 2 minutes, cold.

Catalog: https://agentworkspace.attrition.sh

Quick start

npx attrition-sh pack install rag-hybrid-bm25-vector

rag-hybrid-bm25-vector is a real slug in the catalog — swap it for any pack returned by attrition pack list.

This creates:

  • .claude/skills/<slug>/SKILL.md — the skill, with frontmatter
  • AGENTS.md — appended with a managed fragment between <!-- attrition:pack:<slug>:start --> / :end markers
  • .attrition/installed.json — lockfile for drift detection

Re-running the same install is idempotent: the AGENTS.md fragment is replaced in place (no duplicates) and the SKILL.md is overwritten atomically.

Commands

  • attrition pack install <slug> — install a pack (default target: Claude Code)
  • attrition pack install <slug> --target=cursor — install as a Cursor rule (.cursor/rules/<slug>.mdc)
  • attrition pack list — list all registry packs
  • attrition pack search <query> — search packs
  • attrition pack verify — compare installed versions against the registry

Cursor users

npx attrition-sh pack install rag-hybrid-bm25-vector --target=cursor

With --target=cursor, the CLI writes:

  • .cursor/rules/<slug>.mdc — the rule, with Cursor-style MDC frontmatter (description, globs, alwaysApply: false). Cursor picks up any file under .cursor/rules/*.mdc automatically — no additional project config required.
  • .attrition/installed.json — the same lockfile as the Claude Code target, but with target: "cursor" recorded per pack so attrition pack verify and the catalog reverse-index can tell the targets apart.

No AGENTS.md is created or modified with --target=cursor. Claude Code and Cursor can coexist in the same repo: install pack A to claude-code and pack B to cursor and both end up tracked in the same lockfile with distinct target fields.

Global flags

  • --registry <url> — override ATTRITION_REGISTRY_URL
  • --dry-run — print planned changes without writing
  • --no-telemetry — disable anonymous install ping
  • --json — emit machine-readable JSON output

Environment variables

  • ATTRITION_REGISTRY_URL — base URL for the pack registry (default: https://agentworkspace.attrition.sh)

Safety guarantees

  • Slug validation (^[a-z0-9][a-z0-9-]{0,99}$) at every entry point.
  • Path resolution via path.resolve + path.relative — no writes escape cwd.
  • Atomic file writes (tmp file + rename) — never partial on crash.
  • AGENTS.md marker corruption is detected BEFORE any writes; installs abort loudly.
  • Re-installing the same slug is idempotent — single fragment in AGENTS.md.
  • Registry errors produce non-zero exit codes; no partial state.
  • Telemetry is fire-and-forget; failures never block install.

Dev

cd cli
npm install
npm run build
npm test
npm run dev -- pack list