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

writinglint-rulepack-reader-first

v0.5.0

Published

Deterministic WritingLint rules that reduce cognitive load and unexplained jargon.

Readme

writinglint-rulepack-reader-first

Reader-first prose checks for WritingLint. The pack detects cognitive load and unexplained jargon without enforcing a controlled dictionary or claiming compliance with an external standard.

import { Linter, resolveConfig } from 'writinglint-core';
import { recommended } from 'writinglint-rulepack-reader-first';

const result = await new Linter(parser).lint(text, resolveConfig(recommended));

The pack checks loaded sentences, oversized paragraphs, terminology introduced too quickly, undefined decision standards, sustained buffer pressure, rapidly changing or abruptly resumed relationships, unresolved promises, noun piles, repeated initialisms, abstract reference chains, subjectless fragment chains, repeated label-led explanations, and bracketed or dashed commentary. It reviews sentences after 24 words and warns at 32 words, even when the grammar is simple. The cross-sentence rules become stricter when weak habits repeat: one isolated fragment can pass while several nearby fragments become an error.

Document-wide findings are part of the reader-first rule set, but their confidence still controls how prominently they appear. Low-confidence calibration signals appear at info; use the strict preset to include them, while the normal warning level includes document findings with stronger evidence.

sentence-load findings include candidate clause-boundary offsets and separate word, clause, label, punctuation, and nearby-load measurements. Consumers can use those fields to propose a real split and measure partial improvement even when the rewritten sentence still exceeds a threshold.

The eval/strict-cases.jsonl dataset contains generic bad/fixed pairs for these habits. The examples preserve the writing patterns found during private audits, but contain no private names, identifiers, or copied prose. Tests require each bad example to trigger its expected rule and each fixed example to pass the complete recommended pack.