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

introvert-skill

v1.0.6

Published

Cuts AI agent output tokens while every sentence stays complete and grammatical. Installs for Claude Code, Cursor, Codex, and Gemini CLI.

Readme

introvert

Say it once. Say it right. Stop.

A skill for AI coding agents that cuts output tokens without breaking a single sentence.

npx introvert-skill

Installs for Claude Code, Cursor, Codex CLI, and Gemini CLI — whichever it finds.

Also installable through the open skills.sh ecosystem, which covers 70+ agents:

npx skills add DeepakGanapathi97/introvert

Why this exists

Caveman proved people will trade prose for tokens. It saves about 65% by dropping articles, verbs, and sentence structure:

"Bug in auth middleware. Token expiry check use < not <=. Fix:"

You understand it. But "check use" is not English, and you cannot paste it into a PR without rewriting it. On a personal project that is a fine trade. On enterprise code — a migration, an auth check, an incident postmortem read by six people — an ambiguous instruction costs more than the tokens it saved.

introvert makes the opposite trade on grammar and the same trade on tokens:

"The auth middleware compares expiry with < instead of <=. Change it to <=."

Same information. Same order of magnitude of savings. Still a sentence.

Cuts output tokens up to 75%, measured on live model output — not estimated. Both levels held a clean grammatical record across the eval; full methodology and raw numbers are in evals/results/latest.json.

Install

npx introvert-skill              # every detected agent
npx introvert-skill --dry-run    # show what would be written, change nothing
npx introvert-skill --agent cursor
npx introvert-skill --uninstall

Node 18 or newer. No runtime dependencies. Existing files are backed up to .bak before anything is overwritten.

Claude Code plugin marketplace: the repo is a valid plugin — point your marketplace at DeepakGanapathi97/introvert.

Any other agent: paste src/rules.md into its system prompt or rules file. That file is the whole skill; everything else is packaging.

Use

/introvert            activate at standard (default)
/introvert max        hardest compression
/introvert off        deactivate

Natural phrases work too: "introvert mode", "quiet mode", "talk less", "be minimal", "less words", "stop rambling", "fewer tokens".

A one-off "be brief" does not activate it. That asks for one short answer, not a mode.

Levels

| Level | Cuts | Length | |---|---|---| | standard | Filler, hedging, preamble, redundant clauses, restatements, padded phrasing | One short paragraph for most questions | | max | Also every supporting clause that is not load-bearing | The answer, plus at most one supporting sentence |

The grammatical floor never moves between levels. Only the amount of supporting detail does. A sentence at max has a subject and a verb exactly as one at standard does.

What it never touches

Code blocks, commit messages, PR bodies, error strings, identifiers, file paths, and CLI commands are reproduced verbatim at every level — with one exception: a real credential (API key, password, token, private key) gets redacted no matter where it appears. Verbatim reproduction never overrides that.

When it gets out of the way

Compression suspends completely, then resumes on its own, when:

  • Another skill or command defines the output format. introvert governs prose style and never overrides another skill's required structure.
  • The response carries a security warning.
  • The response confirms a destructive or irreversible action.
  • Steps are ordered and dropping a clause could scramble them.
  • You ask for clarification or repeat a question. The compression failed; you get the full answer.

This is the difference between a style and a straitjacket. A skill that compresses a DROP TABLE confirmation is a bug.

It also stops sounding like a model

Compressed text still reads as machine-written if it keeps machine vocabulary. introvert bans the tells — delve, crucial, pivotal, testament, robust, seamless, comprehensive, leverage, foster, showcase — along with negative parallelism ("not just X, but Y"), rule-of-three padding, and "serves as" standing in for "is".

These cuts serve both goals at once, because the tell-words are almost always padding. The list is derived from Wikipedia's Signs of AI writing.

Honest limits

  • Output tokens only. Input and reasoning tokens are unchanged. Anyone claiming otherwise is measuring wrong.
  • The skill costs input tokens. It is loaded into context on every turn. On short exchanges that overhead can exceed what it saves; the savings compound over long sessions.
  • Every number in this README was measured, not estimated. Reproduce them with npm run eval.

How it is validated

npm run eval sends every prompt in evals/corpus.json to a live model twice: once with a neutral system prompt, once with the same prompt plus the introvert rules. Both arms are identical except for the rules, so the difference is attributable to the rules. Token counts come from the API's own usage reporting, not from an estimator.

Every run is then graded on four gates:

| Gate | Fails when | |---|---| | Grammar | Any sentence lacks a subject or a main verb | | AI vocabulary | Any banned word appears | | Information parity | A fact is lost that makes the answer wrong or unactionable | | Ambiguity | The compressed answer can be misread in a way the baseline cannot |

A failure on grammar, vocabulary, or parity blocks a release regardless of how good the token number looks. The token number is the reward; the gates are the product.

Development

npm run build     # regenerate agent artifacts from src/rules.md
npm run check     # fail if a committed artifact drifted from the source
npm test          # installer tests
npm run eval      # live model evaluation

src/rules.md is the single source of truth. Every agent-specific file is generated from it, so a rule fix is a one-file edit. npm run check fails the build if a committed artifact has drifted.

Credit

caveman by Julius Brussee came first and proved the idea. introvert is not a replacement for it — it is the other side of the same trade. If you want maximum compression and do not mind fragments, use caveman. If your output ends up in code review, use this.

License

MIT